Constituciones text analysis
In [1]:
Copied!
%load_ext autoreload
%autoreload 2
%load_ext autoreload
%autoreload 2
In [2]:
Copied!
import pandas as pd
import re
import pandas as pd
import re
In [3]:
Copied!
def read_and_filter(filename):
with open(filename, 'rt') as f:
text = f.read()
text = re.sub('\n\n+', '\n', text)
text = re.sub('(?<=\w)\s*\n(?=\w)', ' ', text)
text = text.replace(' ', ' ')
text = text.replace('', '')
return text
def read_and_filter(filename):
with open(filename, 'rt') as f:
text = f.read()
text = re.sub('\n\n+', '\n', text)
text = re.sub('(?<=\w)\s*\n(?=\w)', ' ', text)
text = text.replace(' ', ' ')
text = text.replace('', '')
return text
In [4]:
Copied!
text = read_and_filter('../data/external/constitucion_chile_2022/borrador.txt')
print(text[0:2500])
text = read_and_filter('../data/external/constitucion_chile_2022/borrador.txt')
print(text[0:2500])
• Este documento es un consolidado que reúne las normas aprobadas por el Pleno de la Convención Constitucional, ordenadas por comisión. La relación de números de los artículos obedece a lo dispuesto en los respectivos informes y no es el orden definitivo, ya que ese proceso deberá ser realizado por la Comisión de Armonización (Actualizado el 14.05.22). CONSOLIDADO NORMAS APROBADAS PARA LA PROPUESTA CONSTITUCIONAL POR EL PLENO DE LA CONVENCIÓN CAPÍTULO (COM 1) DE LA DEMOCRACIA 1.- Artículo 2°.- Democracia paritaria. El Estado reconoce y promueve una sociedad en la que mujeres, hombres, diversidades y disidencias sexogenéricas participen en condiciones de igualdad sustantiva, reconociendo que su representación efectiva en el conjunto del proceso democrático es un principio y condición mínima para el ejercicio pleno y sustantivo de la democracia y la ciudadanía. Todos los órganos colegiados del Estado, los órganos autónomos constitucionales y los órganos superiores y directivos de la Administración, así como los directorios de las empresas públicas y semipúblicas, deberán tener una composición paritaria que asegure que, al menos, el cincuenta por ciento de sus integrantes sean mujeres. Asimismo, el Estado adoptará medidas para la representación de diversidades y disidencias de género a través del mecanismo que establezca la ley. El Estado promoverá la integración paritaria en sus instituciones y en todos los espacios públicos y privados. 2.- Artículo 3°.- Corresponderá al Estado, en sus diferentes ámbitos y funciones, garantizar la participación democrática e incidencia política de todas las personas, especialmente la de los grupos históricamente excluidos y de especial protección. El Estado deberá garantizar la inclusión de estos grupos en las políticas públicas y en el proceso de formación de las leyes, mediante mecanismos de participación popular y deliberación política, asegurando medidas afirmativas que posibiliten su participación efectiva. 3.- Artículo X.- Los poderes públicos adoptarán las medidas necesarias para adecuar e impulsar la legislación, instituciones, marcos normativos y prestación de servicios, con el fin de alcanzar la igualdad sustantiva y la paridad. Con ese objetivo, el Poder Ejecutivo, el Poder Legislativo y los Sistemas de Justicia, así como los órganos de la Administración del Estado y los órganos autónomos, deberán incorporar el enfoque de género en su diseño institucional y en el ejercicio de sus funciones. La
In [5]:
Copied!
prev = read_and_filter('../data/external/constitucion_chile_2022/actual.txt')
print(prev[0:2500])
prev = read_and_filter('../data/external/constitucion_chile_2022/actual.txt')
print(prev[0:2500])
FIJA EL TEXTO REFUNDIDO, COORDINADO Y SISTEMATIZADO DE LA CONSTITUCIÓN POLÍTICA DE LA REPÚBLICA DE CHILE
Núm. 100.- Santiago, 17 de septiembre de 2005.-
Visto: En uso de las facultades que me confiere el artículo 2° de la Ley Nº 20.050, y teniendo presente lo dispuesto en el artículo 32 N°8 de la Constitución Política de 1980,
Decreto:
Fíjase el siguiente texto refundido, coordinado y sistematizado de la Constitución Política de la República:
Capítulo I
BASES DE LA INSTITUCIONALIDAD
Artículo 1°.- Las personas nacen libres e iguales en dignidad y derechos.
La familia es el núcleo fundamental de la sociedad.
El Estado reconoce y ampara a los grupos intermedios a través de los cuales se organiza y estructura la sociedad y les garantiza la adecuada autonomía para cumplir sus propios fines específicos.
El Estado está al servicio de la persona humana y su finalidad es promover el bien común, para lo cual debe contribuir a crear las condiciones sociales que permitan a todos y a cada uno de los integrantes de la comunidad nacional su mayor realización espiritual y material posible, con pleno respeto a los derechos y garantías que esta Constitución establece.
Es deber del Estado resguardar la seguridad nacional, dar protección a la población y a la familia, propender al fortalecimiento de ésta, promover la integración armónica de todos los sectores de la Nación y asegurar el derecho de las personas a participar con igualdad de oportunidades en la vida nacional.
Artículo 2º.- Son emblemas nacionales la bandera nacional, el escudo de armas de la República y el himno nacional.
Artículo 3º.- El Estado de Chile es unitario.
La administración del Estado será funcional y territorialmente descentralizada, o desconcentrada en su caso, de conformidad a la ley.
Los órganos del Estado promoverán el fortalecimiento de la regionalización del país y el desarrollo equitativo y solidario entre las regiones, provincias y comunas del territorio nacional.
Artículo 4°.- Chile es una república democrática.
Artículo 5º.- La soberanía reside esencialmente en la Nación. Su ejercicio se realiza por el pueblo a través del plebiscito y de elecciones periódicas y, también, por las autoridades que esta Constitución establece. Ningún sector del pueblo ni individuo alguno puede atribuirse su ejercicio.
El ejercicio de la soberanía reconoce como limitación el respeto a los derechos esenciales que emanan de la naturaleza humana. Es deber de los órgano
In [6]:
Copied!
len(text) / len(prev) * 100
len(text) / len(prev) * 100
Out[6]:
109.31976379771055
In [7]:
Copied!
from gensim.utils import tokenize
from cytoolz import frequencies
prev_tokens = frequencies(tokenize(prev.replace('mente', ''), lowercase=True, deacc=False))
prev_tokens
from gensim.utils import tokenize
from cytoolz import frequencies
prev_tokens = frequencies(tokenize(prev.replace('mente', ''), lowercase=True, deacc=False))
prev_tokens
Out[7]:
{'fija': 33,
'el': 1585,
'texto': 72,
'refundido': 53,
'coordinado': 52,
'y': 1250,
'sistematizado': 52,
'de': 3791,
'la': 2265,
'constitución': 123,
'política': 18,
'república': 200,
'chile': 22,
'núm': 1,
'santiago': 3,
'septiembre': 3,
'visto': 1,
'en': 1425,
'uso': 13,
'las': 863,
'facultades': 10,
'que': 1165,
'me': 1,
'confiere': 4,
'artículo': 343,
'ley': 462,
'nº': 106,
'teniendo': 1,
'presente': 43,
'lo': 223,
'dispuesto': 66,
'n': 30,
'decreto': 95,
'fíjase': 1,
'siguiente': 32,
'capítulo': 22,
'i': 8,
'bases': 8,
'institucionalidad': 2,
'personas': 66,
'nacen': 1,
'libres': 1,
'e': 50,
'iguales': 4,
'dignidad': 2,
'derechos': 33,
'familia': 3,
'es': 25,
'núcleo': 1,
'fundamental': 2,
'sociedad': 12,
'estado': 129,
'reconoce': 4,
'ampara': 1,
'a': 996,
'los': 1092,
'grupos': 7,
'intermedios': 4,
'través': 17,
'cuales': 14,
'se': 531,
'organiza': 1,
'estructura': 3,
'les': 24,
'garantiza': 3,
'adecuada': 3,
'autonomía': 5,
'para': 364,
'cumplir': 17,
'sus': 198,
'propios': 6,
'fines': 6,
'específicos': 3,
'está': 5,
'al': 335,
'servicio': 85,
'persona': 33,
'humana': 2,
'su': 315,
'finalidad': 7,
'promover': 6,
'bien': 5,
'común': 5,
'cual': 18,
'debe': 7,
'contribuir': 3,
'crear': 5,
'condiciones': 17,
'sociales': 5,
'permitan': 3,
'todos': 26,
'cada': 68,
'uno': 22,
'integrantes': 21,
'comunidad': 7,
'nacional': 126,
'mayor': 9,
'realización': 6,
'espiritual': 1,
'material': 2,
'posible': 2,
'con': 339,
'pleno': 31,
'respeto': 5,
'garantías': 7,
'esta': 131,
'establece': 14,
'deber': 8,
'del': 896,
'resguardar': 3,
'seguridad': 56,
'dar': 11,
'protección': 16,
'población': 6,
'propender': 3,
'fortalecimiento': 2,
'ésta': 23,
'integración': 4,
'armónica': 1,
'sectores': 1,
'nación': 23,
'asegurar': 12,
'derecho': 89,
'participar': 3,
'igualdad': 5,
'oportunidades': 3,
'vida': 8,
'º': 194,
'son': 31,
'emblemas': 3,
'nacionales': 9,
'bandera': 1,
'escudo': 1,
'armas': 5,
'himno': 1,
'unitario': 1,
'administración': 43,
'será': 81,
'funcional': 1,
'territorial': 4,
'descentralizada': 1,
'o': 657,
'desconcentrada': 1,
'caso': 142,
'conformidad': 66,
'órganos': 18,
'promoverán': 1,
'regionalización': 1,
'país': 23,
'desarrollo': 33,
'equitativo': 2,
'solidario': 1,
'entre': 51,
'regiones': 21,
'provincias': 5,
'comunas': 9,
'territorio': 15,
'una': 182,
'democrática': 1,
'soberanía': 5,
'reside': 4,
'esencial': 5,
'ejercicio': 113,
'realiza': 1,
'por': 603,
'pueblo': 37,
'plebiscito': 56,
'elecciones': 69,
'periódicas': 2,
'también': 20,
'autoridades': 23,
'ningún': 28,
'sector': 7,
'ni': 53,
'individuo': 7,
'alguno': 26,
'puede': 19,
'atribuirse': 3,
'como': 98,
'limitación': 2,
'esenciales': 6,
'emanan': 1,
'naturaleza': 16,
'respetar': 3,
'tales': 10,
'garantizados': 2,
'así': 35,
'tratados': 9,
'internacionales': 6,
'ratificados': 2,
'encuentren': 11,
'vigentes': 7,
'deben': 10,
'someter': 1,
'acción': 16,
'normas': 64,
'dictadas': 2,
'conforme': 33,
'ella': 31,
'garantizar': 7,
'orden': 36,
'institucional': 2,
'preceptos': 8,
'obligan': 1,
'tanto': 19,
'titulares': 7,
'dichos': 11,
'toda': 24,
'institución': 2,
'grupo': 4,
'infracción': 14,
'norma': 7,
'generará': 3,
'responsabilidades': 2,
'sanciones': 8,
'determine': 41,
'actúan': 1,
'válida': 7,
'previa': 20,
'investidura': 1,
'regular': 3,
'dentro': 96,
'competencia': 11,
'forma': 84,
'prescriba': 1,
'ninguna': 15,
'magistratura': 4,
'pueden': 10,
'aun': 4,
'pretexto': 1,
'circunstancias': 6,
'extraordinarias': 2,
'otra': 20,
'autoridad': 27,
'expresa': 12,
'hayan': 18,
'conferido': 1,
'virtud': 23,
'leyes': 53,
'todo': 53,
'acto': 13,
'contravención': 1,
'este': 76,
'nulo': 1,
'originará': 1,
'señale': 26,
'funciones': 79,
'públicas': 12,
'obliga': 2,
'estricto': 1,
'cumplimiento': 19,
'principio': 5,
'probidad': 2,
'todas': 21,
'actuaciones': 4,
'públicos': 29,
'actos': 18,
'resoluciones': 12,
'fundamentos': 3,
'procedimientos': 11,
'utilicen': 1,
'sin': 117,
'embargo': 17,
'sólo': 49,
'quórum': 24,
'calificado': 17,
'podrá': 178,
'establecer': 29,
'reserva': 7,
'secreto': 2,
'aquéllos': 3,
'éstos': 8,
'cuando': 40,
'publicidad': 5,
'afectare': 1,
'debido': 1,
'interés': 9,
'presidente': 206,
'ministros': 42,
'diputados': 77,
'senadores': 40,
'demás': 62,
'funcionarios': 17,
'orgánica': 128,
'constitucional': 230,
'deberán': 47,
'declarar': 20,
'intereses': 5,
'patrimonio': 8,
'pública': 49,
'dicha': 37,
'determinará': 31,
'casos': 40,
'esas': 6,
'delegarán': 1,
'terceros': 4,
'aquellos': 14,
'bienes': 14,
'obligaciones': 13,
'supongan': 1,
'conflicto': 2,
'función': 22,
'asimismo': 44,
'considerar': 4,
'otras': 21,
'medidas': 26,
'apropiadas': 1,
'resolverlos': 1,
'situaciones': 4,
'calificadas': 1,
'disponer': 6,
'enajenación': 2,
'parte': 32,
'esos': 3,
'terrorismo': 1,
'cualquiera': 35,
'formas': 10,
'esencia': 2,
'contrario': 5,
'humanos': 1,
'conductas': 3,
'terroristas': 2,
'penalidad': 1,
'responsables': 4,
'estos': 25,
'delitos': 12,
'quedarán': 5,
'inhabilitados': 2,
'plazo': 66,
'quince': 11,
'años': 66,
'ejercer': 27,
'cargos': 51,
'sean': 33,
'no': 255,
'elección': 84,
'popular': 16,
'rector': 1,
'director': 15,
'establecimiento': 4,
'educación': 12,
'ellos': 14,
'enseñanza': 13,
'explotar': 1,
'un': 233,
'medio': 17,
'comunicación': 14,
'social': 14,
'ser': 137,
'administrador': 1,
'mismo': 33,
'desempeñar': 8,
'él': 9,
'relacionadas': 3,
'emisión': 1,
'difusión': 5,
'opiniones': 2,
'informaciones': 3,
'dirigentes': 4,
'organizaciones': 15,
'políticas': 4,
'carácter': 24,
'vecinal': 3,
'profesional': 6,
'empresarial': 1,
'sindical': 3,
'estudiantil': 1,
'gremial': 4,
'general': 91,
'durante': 29,
'dicho': 38,
'anterior': 54,
'entiende': 1,
'perjuicio': 52,
'inhabilidades': 9,
'tiempo': 20,
'establezca': 11,
'refiere': 37,
'inciso': 107,
'serán': 82,
'considerados': 1,
'siempre': 26,
'comunes': 9,
'políticos': 26,
'efectos': 36,
'legales': 22,
'procederá': 18,
'respecto': 32,
'indulto': 3,
'particular': 3,
'salvo': 20,
'conmutar': 1,
'pena': 12,
'muerte': 3,
'presidio': 1,
'perpetuo': 1,
'ii': 4,
'nacionalidad': 11,
'ciudadania': 1,
'chilenos': 6,
'nacidos': 2,
'excepción': 32,
'hijos': 5,
'extranjeros': 5,
'gobierno': 31,
'transeúntes': 1,
'podrán': 116,
'optar': 6,
'chilena': 14,
'padre': 1,
'madre': 1,
'extranjero': 5,
'requerirá': 17,
'ascendientes': 2,
'línea': 3,
'recta': 1,
'primer': 6,
'segundo': 25,
'grado': 3,
'haya': 20,
'adquirido': 1,
'establecido': 38,
'números': 13,
'ó': 3,
'obtuvieren': 2,
'carta': 2,
'nacionalización': 6,
'especial': 30,
'gracia': 4,
'reglamentará': 1,
'opción': 8,
'otorgamiento': 2,
'negativa': 1,
'cancelación': 2,
'cartas': 2,
'formación': 10,
'registro': 25,
'pierde': 2,
'renuncia': 5,
'voluntaria': 6,
'manifestada': 1,
'ante': 43,
'competente': 15,
'producirá': 5,
'si': 96,
'ha': 7,
'nacionalizado': 1,
'supremo': 16,
'prestación': 1,
'servicios': 15,
'guerra': 15,
'exterior': 10,
'enemigos': 1,
'aliados': 1,
'revoque': 1,
'concedida': 1,
'hubieren': 18,
'perdido': 3,
'causales': 13,
'establecidas': 17,
'rehabilitados': 1,
'afectada': 6,
'resolución': 32,
'administrativa': 9,
'prive': 1,
'desconozca': 1,
'recurrir': 2,
'sí': 8,
'nombre': 9,
'treinta': 33,
'días': 131,
'corte': 78,
'suprema': 50,
'conocerá': 6,
'jurado': 4,
'tribunal': 105,
'interposición': 4,
'recurso': 11,
'suspenderá': 5,
'recurridos': 1,
'ciudadanos': 15,
'cumplido': 8,
'dieciocho': 2,
'edad': 16,
'sido': 17,
'condenados': 2,
'aflictiva': 5,
'calidad': 17,
'ciudadano': 14,
'otorga': 3,
'sufragio': 24,
'confieran': 2,
'fuera': 12,
'sufragar': 2,
'desde': 60,
'primarias': 8,
'presidenciales': 8,
'plebiscitos': 7,
'establecerá': 27,
'procedimiento': 24,
'materializar': 1,
'inscripción': 4,
'electoral': 143,
'regulará': 15,
'manera': 9,
'realizarán': 3,
'procesos': 8,
'electorales': 45,
'plebiscitarios': 4,
'incisos': 33,
'primero': 32,
'tratándose': 8,
'refieren': 5,
'ciudadanía': 12,
'estará': 19,
'sujeto': 4,
'avecindados': 2,
'más': 59,
'año': 38,
'cinco': 36,
'cumplan': 7,
'requisitos': 32,
'señalados': 18,
'nacionalizados': 1,
'tendrán': 12,
'después': 22,
'estar': 9,
'posesión': 5,
'votaciones': 31,
'populares': 30,
'personal': 18,
'igualitario': 2,
'voluntario': 1,
'convocarse': 1,
'votación': 44,
'previstos': 4,
'suspende': 1,
'interdicción': 1,
'demencia': 1,
'hallarse': 3,
'acusada': 1,
'delito': 18,
'merezca': 1,
'califique': 5,
'conducta': 7,
'terrorista': 3,
'haber': 18,
'sancionado': 2,
'séptimo': 9,
'número': 66,
'causa': 19,
'hallaren': 1,
'privados': 3,
'recuperarán': 2,
'término': 21,
'contado': 18,
'declaración': 33,
'suspensión': 12,
'otro': 14,
'efecto': 35,
'legal': 31,
'pérdida': 2,
'condena': 3,
'relativos': 2,
'tráfico': 1,
'estupefacientes': 1,
'merecido': 1,
'además': 20,
'causal': 1,
'indicada': 4,
'vez': 22,
'extinguida': 1,
'responsabilidad': 11,
'penal': 15,
'previstas': 1,
'solicitar': 10,
'rehabilitación': 4,
'senado': 50,
'cumplida': 2,
'habrá': 13,
'sistema': 35,
'público': 43,
'organización': 29,
'funcionamiento': 28,
'previsto': 5,
'garantizará': 3,
'plena': 4,
'independientes': 37,
'miembros': 76,
'partidos': 30,
'presentación': 6,
'candidaturas': 41,
'participación': 23,
'financiamiento': 5,
'transparencia': 11,
'límite': 22,
'control': 15,
'gasto': 22,
'contemplará': 7,
'bajo': 15,
'dirección': 9,
'incorporarán': 1,
'solo': 22,
'ministerio': 75,
'quienes': 17,
'establecidos': 18,
'resguardo': 3,
'corresponderá': 34,
'fuerzas': 23,
'armadas': 15,
'carabineros': 13,
'modo': 10,
'indique': 2,
'iii': 3,
'deberes': 4,
'constitucionales': 16,
'asegura': 3,
'integridad': 3,
'física': 2,
'psíquica': 2,
'protege': 2,
'nacer': 1,
'establecerse': 1,
'contemplado': 3,
'aprobada': 6,
'prohíbe': 2,
'aplicación': 18,
'apremio': 1,
'ilegítimo': 1,
'científico': 1,
'tecnológico': 1,
'llevará': 3,
'cabo': 3,
'restricciones': 3,
'utilización': 2,
'debiendo': 10,
'actividad': 7,
'cerebral': 1,
'información': 17,
'proveniente': 2,
'hay': 2,
'privilegiados': 1,
'esclavos': 1,
'pise': 1,
'queda': 6,
'libre': 15,
'hombres': 11,
'mujeres': 10,
'alguna': 16,
'diferencias': 1,
'arbitrarias': 1,
'igual': 20,
'tiene': 12,
'defensa': 14,
'jurídica': 14,
'impedir': 2,
'restringir': 8,
'perturbar': 1,
'debida': 8,
'intervención': 4,
'letrado': 3,
'hubiere': 17,
'requerida': 3,
'regirá': 8,
'concerniente': 2,
'administrativo': 7,
'disciplinario': 1,
'pertinentes': 3,
'respectivos': 11,
'estatutos': 6,
'arbitrará': 1,
'medios': 14,
'otorgar': 8,
'asesoramiento': 1,
'puedan': 9,
'procurárselos': 1,
'mismos': 9,
'señalará': 11,
'naturales': 7,
'víctimas': 3,
'dispondrán': 1,
'asesoría': 1,
'gratuitas': 1,
'reconocida': 2,
'imputada': 1,
'irrenunciable': 1,
'asistida': 1,
'abogado': 11,
'defensor': 1,
'proporcionado': 1,
'nombrare': 1,
'oportunidad': 5,
'establecida': 6,
'nadie': 7,
'juzgado': 3,
'comisiones': 13,
'especiales': 29,
'sino': 8,
'señalare': 1,
'hallare': 3,
'anterioridad': 9,
'perpetración': 2,
'hecho': 14,
'sentencia': 18,
'órgano': 10,
'ejerza': 5,
'jurisdicción': 12,
'fundarse': 2,
'proceso': 15,
'previo': 13,
'tramitado': 3,
'legislador': 2,
'investigación': 5,
'racionales': 1,
'justos': 1,
'presumir': 1,
'castigará': 1,
'promulgada': 2,
'menos': 40,
'nueva': 30,
'favorezca': 1,
'afectado': 11,
'penas': 1,
'sanciona': 1,
'esté': 6,
'descrita': 2,
'privada': 2,
'honra': 1,
'datos': 6,
'personales': 2,
'tratamiento': 1,
'efectuará': 10,
'inviolabilidad': 1,
'hogar': 2,
'allanarse': 1,
'comunicaciones': 3,
'documentos': 3,
'interceptarse': 1,
'abrirse': 1,
'registrarse': 3,
'determinados': 11,
'libertad': 21,
'conciencia': 3,
'manifestación': 1,
'creencias': 1,
'cultos': 1,
'opongan': 2,
'moral': 5,
'buenas': 2,
'costumbres': 2,
'confesiones': 2,
'religiosas': 2,
'erigir': 1,
'conservar': 2,
'templos': 2,
'dependencias': 2,
'higiene': 1,
'fijadas': 2,
'ordenanzas': 1,
'iglesias': 1,
'instituciones': 12,
'cualquier': 30,
'culto': 2,
'otorgan': 2,
'reconocen': 1,
'actual': 9,
'vigor': 13,
'destinados': 7,
'exclusiva': 21,
'estarán': 14,
'exentos': 1,
'clase': 11,
'contribuciones': 1,
'individual': 16,
'consecuencia': 4,
'residir': 4,
'permanecer': 4,
'lugar': 29,
'trasladarse': 2,
'entrar': 6,
'salir': 2,
'condición': 3,
'guarden': 4,
'b': 22,
'privado': 16,
'restringida': 1,
'c': 17,
'arrestado': 8,
'detenido': 8,
'funcionario': 8,
'facultado': 2,
'le': 38,
'sea': 46,
'intimada': 1,
'fuere': 13,
'sorprendido': 1,
'flagrante': 6,
'objeto': 28,
'puesto': 4,
'disposición': 52,
'juez': 19,
'veinticuatro': 1,
'horas': 6,
'siguientes': 69,
'hiciere': 1,
'arrestar': 2,
'detener': 1,
'deberá': 116,
'cuarenta': 10,
'ocho': 8,
'aviso': 1,
'poniendo': 1,
'fundada': 9,
'ampliar': 1,
'hasta': 65,
'diez': 31,
'investigaren': 1,
'hechos': 13,
'calificados': 2,
'd': 13,
'prisión': 3,
'preventiva': 3,
'preso': 4,
'casa': 2,
'lugares': 8,
'encargados': 7,
'prisiones': 1,
'recibir': 3,
'ellas': 22,
'procesado': 2,
'dejar': 3,
'constancia': 4,
'correspondiente': 16,
'emanada': 1,
'tenga': 9,
'facultad': 12,
'incomunicación': 1,
'encargado': 9,
'detención': 6,
'visite': 1,
'encuentre': 7,
'obligado': 4,
'requiera': 2,
'transmitir': 2,
'copia': 6,
'reclamar': 5,
'dé': 2,
'certificado': 6,
'aquel': 11,
'omitido': 1,
'requisito': 8,
'imputado': 9,
'considerada': 1,
'necesaria': 4,
'investigaciones': 5,
'ofendido': 2,
'modalidades': 5,
'obtenerla': 1,
'apelación': 1,
'pronuncie': 3,
'sobre': 114,
'conocida': 1,
'superior': 16,
'corresponda': 38,
'integrado': 7,
'apruebe': 5,
'u': 19,
'otorgue': 2,
'acordada': 2,
'unanimidad': 1,
'mientras': 21,
'dure': 1,
'quedará': 5,
'sometido': 2,
'vigilancia': 1,
'contemple': 1,
'f': 5,
'causas': 7,
'criminales': 2,
'obligar': 1,
'acusado': 6,
'declare': 11,
'juramento': 3,
'propio': 9,
'tampoco': 3,
'obligados': 2,
'contra': 12,
'éste': 30,
'descendientes': 1,
'cónyuge': 1,
'según': 30,
'g': 3,
'imponerse': 1,
'confiscación': 1,
'comiso': 1,
'pero': 12,
'procedente': 4,
'asociaciones': 7,
'ilícitas': 1,
'h': 2,
'aplicarse': 2,
'sanción': 10,
'previsionales': 3,
'dictado': 5,
'sobreseimiento': 1,
'definitivo': 5,
'absolutoria': 1,
'condenado': 1,
'instancia': 1,
'injustificada': 1,
'errónea': 1,
'arbitraria': 2,
'tendrá': 24,
'indemnizado': 1,
'perjuicios': 3,
'patrimoniales': 1,
'morales': 1,
'sufrido': 2,
'indemnización': 6,
'determinada': 4,
'judicial': 21,
'breve': 3,
'sumario': 1,
'prueba': 2,
'apreciará': 2,
'vivir': 2,
'ambiente': 3,
'contaminación': 2,
'velar': 5,
'tutelar': 1,
'preservación': 2,
'específicas': 1,
'libertades': 4,
'proteger': 4,
'salud': 11,
'acceso': 6,
'acciones': 6,
'promoción': 3,
'recuperación': 1,
'coordinación': 6,
'preferente': 3,
'ejecución': 6,
'presten': 1,
'privadas': 4,
'cotizaciones': 9,
'obligatorias': 10,
'elegir': 6,
'desee': 1,
'acogerse': 1,
'estatal': 2,
'distintas': 2,
'etapas': 1,
'padres': 2,
'tienen': 7,
'educar': 1,
'obligatorio': 7,
'parvularia': 1,
'financiará': 1,
'gratuito': 3,
'partir': 6,
'nivel': 6,
'menor': 11,
'destinado': 3,
'niveles': 4,
'superiores': 11,
'transición': 2,
'siendo': 4,
'ingreso': 6,
'básica': 5,
'media': 9,
'financiar': 5,
'tal': 17,
'extenderá': 1,
'fomentar': 1,
'estimular': 1,
'científica': 1,
'tecnológica': 1,
'creación': 3,
'artística': 1,
'incremento': 1,
'cultural': 4,
'perfeccionamiento': 2,
'incluye': 1,
'abrir': 2,
'organizar': 1,
'mantener': 5,
'establecimientos': 3,
'educacionales': 3,
'limitaciones': 10,
'impuestas': 1,
'oficial': 15,
'orientarse': 1,
'propagar': 1,
'tendencia': 1,
'político': 22,
'partidista': 1,
'escoger': 1,
'mínimos': 1,
'exigirse': 1,
'objetivas': 1,
...}
In [8]:
Copied!
next_tokens = frequencies(tokenize(text.replace('mente', ''), lowercase=True, deacc=False))
next_tokens
next_tokens = frequencies(tokenize(text.replace('mente', ''), lowercase=True, deacc=False))
next_tokens
Out[8]:
{'este': 75,
'documento': 3,
'es': 106,
'un': 217,
'consolidado': 2,
'que': 881,
'reúne': 1,
'las': 1189,
'normas': 26,
'aprobadas': 7,
'por': 513,
'el': 1387,
'pleno': 43,
'de': 3751,
'la': 2806,
'convención': 3,
'constitucional': 61,
'ordenadas': 1,
'comisión': 22,
'relación': 14,
'números': 2,
'los': 1112,
'artículos': 1,
'obedece': 1,
'a': 969,
'lo': 129,
'dispuesto': 25,
'en': 1152,
'respectivos': 8,
'informes': 4,
'y': 2416,
'no': 192,
'orden': 12,
'definitivo': 2,
'ya': 7,
'ese': 8,
'proceso': 26,
'deberá': 119,
'ser': 128,
'realizado': 3,
'armonización': 1,
'actualizado': 1,
'para': 347,
'propuesta': 17,
'capítulo': 20,
'com': 8,
'democracia': 25,
'artículo': 538,
'paritaria': 9,
'estado': 396,
'reconoce': 36,
'promueve': 8,
'una': 203,
'sociedad': 18,
'mujeres': 12,
'hombres': 1,
'diversidades': 6,
'disidencias': 7,
'sexogenéricas': 4,
'participen': 1,
'condiciones': 47,
'igualdad': 32,
'sustantiva': 12,
'reconociendo': 2,
'su': 391,
'representación': 18,
'efectiva': 18,
'conjunto': 14,
'del': 647,
'democrático': 7,
'principio': 38,
'condición': 8,
'mínima': 3,
'ejercicio': 145,
'sustantivo': 1,
'ciudadanía': 13,
'todos': 32,
'órganos': 66,
'colegiados': 5,
'autónomos': 8,
'constitucionales': 10,
'superiores': 3,
'directivos': 4,
'administración': 57,
'así': 70,
'como': 133,
'directorios': 2,
'empresas': 23,
'públicas': 52,
'semipúblicas': 1,
'deberán': 77,
'tener': 17,
'composición': 13,
'asegure': 3,
'al': 229,
'menos': 35,
'cincuenta': 2,
'ciento': 13,
'sus': 289,
'integrantes': 63,
'sean': 30,
'asimismo': 34,
'adoptará': 7,
'medidas': 53,
'género': 39,
'través': 37,
'mecanismo': 3,
'establezca': 60,
'ley': 486,
'promoverá': 17,
'integración': 31,
'instituciones': 38,
'espacios': 16,
'públicos': 67,
'privados': 10,
'corresponderá': 21,
'diferentes': 5,
'ámbitos': 12,
'funciones': 81,
'garantizar': 54,
'participación': 77,
'democrática': 7,
'e': 144,
'incidencia': 1,
'política': 50,
'todas': 92,
'personas': 155,
'especial': 49,
'grupos': 9,
'histórica': 5,
'excluidos': 4,
'protección': 71,
'inclusión': 13,
'estos': 42,
'políticas': 40,
'formación': 26,
'leyes': 77,
'mediante': 25,
'mecanismos': 49,
'popular': 37,
'deliberación': 4,
'asegurando': 12,
'afirmativas': 4,
'posibiliten': 1,
'x': 1,
'poderes': 3,
'adoptarán': 3,
'necesarias': 27,
'adecuar': 1,
'impulsar': 3,
'legislación': 7,
'marcos': 4,
'normativos': 2,
'prestación': 7,
'servicios': 54,
'con': 314,
'fin': 13,
'alcanzar': 4,
'paridad': 17,
'objetivo': 1,
'poder': 24,
'ejecutivo': 6,
'legislativo': 18,
'sistemas': 17,
'justicia': 98,
'incorporar': 3,
'enfoque': 15,
'diseño': 7,
'institucional': 2,
'fiscal': 28,
'presupuestos': 23,
'se': 333,
'adecuarán': 1,
'cumplimiento': 41,
'transversal': 2,
'bis': 20,
'establecer': 42,
'situación': 8,
'discapacidad': 14,
'plurinacional': 10,
'libre': 37,
'determinación': 9,
'pueblos': 58,
'chile': 52,
'intercultural': 9,
'coexistencia': 1,
'diversas': 17,
'naciones': 33,
'marco': 11,
'unidad': 10,
'son': 68,
'indígenas': 56,
'preexistentes': 8,
'mapuche': 1,
'aymara': 1,
'rapa': 7,
'nui': 7,
'lickanantay': 1,
'quechua': 1,
'colla': 1,
'diaguita': 1,
'chango': 1,
'kawashkar': 1,
'yaghan': 1,
'selk': 1,
'nam': 1,
'otros': 25,
'puedan': 18,
'reconocidos': 11,
'forma': 92,
'miembros': 24,
'virtud': 13,
'tienen': 45,
'derecho': 256,
'derechos': 209,
'colectivos': 7,
'individuales': 6,
'autonomía': 30,
'autogobierno': 2,
'propia': 6,
'cultura': 4,
'identidad': 11,
'cosmovisión': 2,
'patrimonio': 30,
'lengua': 5,
'reconocimiento': 15,
'tierras': 5,
'territorios': 30,
'territorio': 50,
'marítimo': 2,
'naturaleza': 65,
'dimensión': 3,
'material': 4,
'inmaterial': 2,
'vínculo': 2,
'mantienen': 1,
'cooperación': 17,
'jurisdicciones': 1,
'autoridades': 29,
'propias': 8,
'o': 672,
'tradicionales': 5,
'participar': 19,
'plena': 8,
'si': 48,
'desean': 1,
'vida': 39,
'económica': 20,
'social': 65,
'cultural': 33,
'deber': 61,
'respetar': 11,
'promover': 39,
'titulares': 16,
'anterior': 16,
'debe': 25,
'distribución': 18,
'incorporando': 1,
'estructura': 6,
'elección': 43,
'nivel': 22,
'local': 15,
'regional': 144,
'nacional': 99,
'junto': 2,
'ello': 6,
'garantizará': 18,
'diálogo': 6,
'creando': 1,
'institucionalidad': 3,
'promoviendo': 5,
'favorezcan': 1,
'comprensión': 1,
'diversidad': 8,
'étnica': 1,
'º': 2,
'compone': 4,
'congreso': 120,
'diputadas': 102,
'diputados': 103,
'cámara': 73,
'regiones': 80,
'ter': 3,
'órgano': 35,
'deliberativo': 2,
'paritario': 4,
'representa': 3,
'pueblo': 27,
'concurre': 1,
'ejerce': 10,
'demás': 87,
'facultades': 16,
'encomendadas': 2,
'constitución': 252,
'está': 7,
'integrado': 16,
'número': 29,
'inferior': 5,
'electos': 1,
'votación': 14,
'directa': 18,
'distritos': 2,
'electorales': 17,
'acuerdo': 51,
'determinará': 30,
'atendiendo': 5,
'criterio': 3,
'proporcionalidad': 7,
'atribuciones': 70,
'exclusivas': 5,
'fiscalizar': 15,
'actos': 25,
'gobierno': 39,
'tendrá': 36,
'facultad': 11,
'solicitar': 11,
'información': 40,
'relativa': 2,
'contenido': 5,
'fundamentos': 3,
'c': 18,
'declarar': 11,
'cuando': 44,
'presidenta': 74,
'presidente': 111,
'presente': 5,
'renuncia': 11,
'cargo': 78,
'motivos': 6,
'originan': 1,
'fundados': 1,
'consecuencia': 2,
'admitirla': 1,
'desecharla': 1,
'd': 15,
'otorgar': 7,
'república': 118,
'pueda': 11,
'ausentarse': 3,
'país': 37,
'más': 49,
'treinta': 15,
'días': 31,
'contar': 9,
'desde': 23,
'tercer': 2,
'domingo': 9,
'noviembre': 2,
'año': 9,
'aquel': 4,
'deba': 5,
'cesar': 4,
'esté': 5,
'otras': 16,
'función': 66,
'ejercer': 36,
'esta': 137,
'atribución': 6,
'puede': 13,
'adoptar': 21,
'acuerdos': 5,
'sugerir': 2,
'observaciones': 6,
'transmitirán': 1,
'escrito': 1,
'dentro': 48,
'contados': 5,
'comunicación': 21,
'dar': 14,
'respuesta': 4,
'fundada': 7,
'medio': 21,
'ministro': 8,
'corresponda': 21,
'b': 17,
'antecedentes': 12,
'patrocinio': 5,
'cuarto': 7,
'contestar': 1,
'ministra': 5,
'tres': 17,
'ningún': 28,
'caso': 76,
'afectarán': 2,
'responsabilidad': 28,
'ministros': 17,
'crear': 13,
'comisiones': 8,
'especiales': 16,
'investigadoras': 2,
'petición': 9,
'dos': 22,
'quintos': 6,
'objeto': 21,
'reunir': 8,
'informaciones': 4,
'relativas': 3,
'determinados': 9,
'tercio': 5,
'podrán': 93,
'despachar': 1,
'citaciones': 1,
'toda': 71,
'persona': 89,
'sea': 43,
'citada': 1,
'estas': 31,
'estará': 26,
'obligada': 2,
'comparecer': 1,
'suministrar': 1,
'le': 27,
'soliciten': 2,
'obstante': 1,
'misma': 9,
'investigadora': 1,
'podrá': 149,
'citar': 2,
'veces': 1,
'sin': 80,
'previo': 10,
'mayoría': 42,
'encargado': 11,
'concurrir': 7,
'denominarán': 2,
'representantes': 26,
'regionales': 81,
'elegidas': 2,
'elegidos': 12,
'región': 42,
'mismo': 10,
'cada': 33,
'final': 2,
'respete': 2,
'elegirán': 1,
'conjunta': 20,
'comunales': 14,
'años': 55,
'después': 9,
'presidencial': 19,
'especificará': 5,
'obligaciones': 16,
'todo': 30,
'incluir': 1,
'obligación': 7,
'rendir': 6,
'cuenta': 13,
'periódica': 5,
'ante': 43,
'asamblea': 33,
'también': 21,
'convocadas': 1,
'convocados': 1,
'efecto': 7,
'ni': 42,
'entidades': 91,
'él': 4,
'dependan': 1,
'exclusiva': 23,
'han': 6,
'lugar': 15,
'acusaciones': 3,
'diez': 11,
'veinte': 3,
'formulen': 1,
'contra': 29,
'hayan': 15,
'comprometido': 3,
'grave': 13,
'honor': 3,
'seguridad': 44,
'nación': 8,
'infringido': 2,
'abierta': 3,
'acusación': 10,
'interponerse': 3,
'mientras': 8,
'seis': 9,
'meses': 11,
'siguientes': 25,
'expiración': 2,
'durante': 29,
'último': 6,
'tiempo': 10,
'ministras': 8,
'haber': 12,
'infringir': 1,
'dejado': 1,
'éstas': 5,
'ejecución': 29,
'delitos': 8,
'traición': 2,
'concusión': 2,
'malversación': 4,
'fondos': 13,
'soborno': 2,
'juezas': 31,
'jueces': 31,
'cortes': 7,
'apelaciones': 13,
'corte': 55,
'suprema': 20,
'contralor': 7,
'general': 50,
'notable': 2,
'abandono': 2,
'deberes': 11,
'generales': 19,
'almirantes': 1,
'pertenecientes': 3,
'fuerzas': 20,
'armadas': 18,
'director': 4,
'carabineros': 1,
'policía': 1,
'investigaciones': 1,
'gobernadores': 3,
'autoridad': 29,
'infracción': 7,
'sedición': 1,
'tramitará': 4,
'conformidad': 71,
'organización': 57,
'funcionamiento': 47,
'procedimientos': 30,
'referidas': 2,
'letras': 2,
'afectado': 5,
'interpuesta': 1,
'permiso': 4,
'hacerlo': 2,
'alguno': 7,
'estuviere': 1,
'aprobada': 8,
'éste': 9,
'ha': 8,
'gobernador': 16,
'necesitará': 1,
'voto': 9,
'casos': 37,
'requerirá': 4,
'presentes': 5,
'acusado': 4,
'quedará': 5,
'suspendido': 3,
'momento': 11,
'declare': 5,
'suspensión': 3,
'cesará': 4,
'desestimare': 1,
'pronunciare': 1,
'conocer': 18,
'entable': 1,
'arreglo': 8,
'establecido': 24,
'resolverá': 6,
'jurado': 1,
'limitará': 1,
'culpable': 2,
'declaración': 22,
'culpabilidad': 2,
'pronunciada': 2,
'tercios': 4,
'trate': 3,
'queda': 3,
'destituido': 2,
'destituida': 2,
'desempeñar': 6,
'otro': 9,
'confianza': 9,
'reste': 2,
'mandato': 7,
'presentarse': 3,
'cual': 21,
'fue': 1,
'período': 21,
'siguiente': 14,
'según': 19,
'funcionario': 3,
'declarado': 5,
'será': 93,
'juzgado': 2,
'tribunal': 28,
'competente': 14,
'tanto': 17,
'aplicación': 9,
'pena': 9,
'señalada': 2,
'delito': 14,
'hubiere': 5,
'hacer': 12,
'civil': 25,
'daños': 2,
'perjuicios': 3,
'causados': 2,
'particulares': 8,
'sesiones': 6,
'conjuntas': 2,
'reunirán': 2,
'sesión': 20,
'tomar': 9,
'juramento': 2,
'promesa': 2,
'asumir': 4,
'recibir': 6,
'pública': 82,
'anual': 9,
'inaugurar': 1,
'decidir': 4,
'nombramientos': 7,
'conforme': 64,
'garantizando': 2,
'estricto': 3,
'escrutinio': 4,
'idoneidad': 8,
'candidatos': 6,
'correspondiente': 15,
'elegida': 4,
'diputada': 8,
'diputado': 8,
'representante': 10,
'requiere': 4,
'ciudadana': 11,
'ciudadano': 4,
'sufragio': 16,
'cumplido': 10,
'dieciocho': 7,
'edad': 9,
'día': 12,
'avecindamiento': 2,
'plazo': 22,
'cuatro': 14,
'hacia': 3,
'atrás': 1,
'entenderá': 10,
'tiene': 48,
'residencia': 2,
'ejerza': 3,
'pueden': 7,
'quien': 19,
'sustituya': 1,
'presidencia': 8,
'subsecretarios': 2,
'consejeros': 13,
'banco': 25,
'central': 23,
'consejo': 65,
'electoral': 32,
'ejerzan': 6,
'jurisdicción': 19,
'calificador': 11,
'elecciones': 20,
'tribunales': 56,
'fiscales': 32,
'adjuntos': 6,
'ministerio': 29,
'público': 62,
'funcionarios': 26,
'funcionarias': 12,
'servicio': 34,
'activo': 4,
'policías': 9,
'naturales': 21,
'administradores': 1,
'jurídicas': 6,
'celebren': 1,
'caucionen': 1,
'contratos': 3,
'militares': 4,
'inhabilidades': 11,
'establecidas': 15,
'serán': 56,
'aplicables': 10,
'quienes': 30,
'hubieren': 4,
'tenido': 1,
'calidades': 3,
'cargos': 32,
'antes': 4,
'mencionados': 2,
'inmediata': 13,
'excepto': 1,
'respecto': 35,
'mencionadas': 3,
'esas': 2,
'inscribir': 1,
'candidatura': 3,
'indicadas': 1,
'cuales': 13,
'inhabilidad': 3,
'anteriores': 7,
'incompatibles': 2,
'entre': 63,
'sí': 13,
'empleo': 11,
'carácter': 40,
'privado': 11,
'directores': 1,
'aun': 4,
'ad': 1,
'honorem': 1,
'autónomas': 32,
'semifiscales': 3,
'estatales': 9,
'tenga': 5,
'aporte': 1,
'capital': 1,
'solo': 6,
'hecho': 5,
'proclamación': 3,
'incompatible': 3,
'desempeñe': 1,
'reelegidos': 5,
'sucesiva': 1,
'hasta': 10,
'efectos': 21,
'ejercido': 7,
'mitad': 9,
'renovarán': 3,
'totalidad': 3,
'establecerá': 34,
'reglas': 10,
'tramitación': 16,
'complementada': 2,
'reglamentos': 6,
'dicten': 1,
'tomarán': 1,
'decisiones': 16,
'salvo': 25,
'disponga': 7,
'quorum': 1,
'diferente': 1,
'entrar': 2,
'concurrencia': 10,
'tercera': 2,
'parte': 23,
'reemplazante': 1,
'requisitos': 24,
'establecidos': 30,
'elegido': 8,
'respectivo': 10,
'alcanzarán': 1,
'incompatibilidades': 10,
'asegurará': 9,
'evento': 1,
'inviolables': 2,
'opiniones': 2,
'manifiesten': 1,
'votos': 7,
'emitan': 1,
'desempeño': 12,
'investidura': 2,
'libertad': 53,
'flagrante': 4,
'respectiva': 30,
'declara': 3,
'previa': 22,
'causa': 9,
'resoluciones': 15,
'dictaren': 1,
'apelarse': 1,
'detenido': 1,
'puesto': 1,
'disposición': 10,
'sumaria': 3,
'procederá': 10,
'inciso': 26,
'resolución': 22,
'firme': 5,
'sujeto': 3,
'juez': 7,
'ausentare': 1,
'corporación': 1,
'receso': 1,
'ésta': 15,
'mesa': 1,
'directiva': 2,
'celebrare': 1,
'caucionare': 1,
'actuare': 1,
'procuradora': 1,
'procurador': 1,
'agente': 1,
'gestiones': 1,
'administrativo': 4,
'provisión': 5,
'empleos': 4,
'consejerías': 1,
'similar': 1,
'actúe': 2,
'interpósita': 1,
'natural': 8,
'jurídica': 41,
'abogada': 2,
'abogado': 4,
'mandataria': 1,
'mandatario': 1,
'cualquier': 33,
'clase': 7,
'juicio': 2,
'ejercite': 1,
'influencia': 1,
'administrativas': 13,
'judiciales': 12,
'favor': 9,
'empleador': 1,
'trabajadores': 15,
'negociaciones': 2,
'conflictos': 13,
'laborales': 6,
'sector': 5,
'intervenga': 2,
'ellos': 8,
'cualquiera': 19,
'partes': 3,
'haya': 16,
'sobre': 86,
'transparencia': 30,
'límites': 10,
'control': 14,
'gasto': 11,
'fecha': 8,
'sentencia': 9,
'requerimiento': 6,
'directivo': 2,
'señalará': 5,
'existe': 2,
'f': 9,
'pierda': 1,
'algún': 1,
'requisito': 3,
'elegibilidad': 1,
'incurra': 1,
'renunciar': 2,
'les': 19,
'afecte': 2,
'enfermedad': 6,
'debida': 13,
'acreditada': 2,
'impida': 3,
'desempeñarlos': 1,
'califique': 2,
'realice': 2,
'constitucionalidad': 9,
'potestad': 14,
'reglamentaria': 9,
'sólo': 40,
'modificar': 9,
'suprimir': 2,
'tributos': 13,
'beneficios': 11,
'tributarios': 5,
'éstos': 5,
'determinar': 15,
'progresión': 3,
'exenciones': 3,
'perjuicio': 38,
'excepciones': 7,
'autorizar': 3,
'contratación': 2,
'empréstitos': 4,
'operaciones': 5,
'comprometer': 2,
'crédito': 3,
'financiera': 20,
'organismos': 19,
'municipalidades': 10,
'consagrado': 1,
'territoriales': 93,
'letra': 4,
'aplicará': 5,
'universidades': 3,
'aquellas': 19,
'contratar': 3,
'efectuarse': 3,
'instituir': 1,
'enajenación': 1,
'bienes': 32,
'gobiernos': 12,
'arrendamiento': 1,
'títulos': 2,
'habilitantes': 1,
'uso': 32,
'explotación': 3,
'concesión': 1,
'disponer': 5,
'organizar': 3,
'distribuir': 2,
'desarrollo': 64,
'permitir': 1,
'entrada': 3,
'tropas': 2,
'extranjeras': 4,
'salida': 1,
'nacionales': 13,
'fuera': 7,
'división': 6,
'político': 7,
'administrativa': 23,
'g': 7,
'señalar': 5,
'valor': 2,
'tipo': 7,
'denominación': 2,
'monedas': 1,
'sistema': 77,
'pesos': 1,
'h': 4,
'conceder': 2,
'indultos': 2,
'amnistías': 1,
'crímenes': 8,
'lesa': 6,
'humanidad': 6,
'i': 4,
'remuneraciones': 8,
'gobernadoras': 1,
'k': 3,
'singularizar': 1,
'ciudad': 3,
'residir': 3,
'celebrar': 4,
'funcionar': 4,
'l': 2,
'guerra': 5,
'm': 2,
'fijar': 4,
'bases': 4,
'rigen': 3,
'n': 1,
'creación': 22,
'modificación': 7,
'ñ': 1,
'régimen': 16,
'jurídico': 10,
'aplicable': 4,
'materia': 29,
'laboral': 4,
'sindical': 3,
'huelga': 8,
'negociación': 8,
'colectiva': 14,
'manifestaciones': 6,
'previsional': 1,
'loterías': 1,
'apuestas': 1,
'p': 1,
'regular': 9,
'materias': 38,
'señale': 22,
'necesaria': 13,
'q': 1,
'exija': 3,
'dictar': 9,
'aquellos': 12,
'decretos': 14,
'instrucciones': 8,
'crea': 1,
'necesarios': 13,
'estén': 3,
'comprendidas': 2,
'comprendida': 1,
'literales': 1,
'rango': 2,
'legal': 16,
'reglamentario': 1,
'primará': 1,
'informar': 7,
'mensual': 1,
'dictado': 1,
'autorización': 13,
'fuerza': 13,
'superior': 21,
'correspondan': 9,
'dominio': 3,
'extenderse': 3,
'fundamentales': 33,
'nacionalidad': 21,
'plebiscitos': 9,
'nunca': 1,
'comprender': 3,
'afecten': 9,
'contraloría': 25,
'otorgue': 3,
'referida': 4,
'precisas': 2,
'recaerá': 2,
'delegación': 4,
'limitaciones': 10,
'restricciones': 5,
'formalidades': 3,
'estimen': 3,
'convenientes': 2,
'incisos': 4,
'autorizado': 1,
'texto': 4,
'refundido': 1,
'coordinado': 4,
'sistematizado': 1,
'conveniente': 3,
...}
In [9]:
Copied!
len(prev_tokens), len(next_tokens)
len(prev_tokens), len(next_tokens)
Out[9]:
(4078, 4556)
In [10]:
Copied!
sum(prev_tokens.values()), sum(next_tokens.values())
sum(prev_tokens.values()), sum(next_tokens.values())
Out[10]:
(46318, 48436)
In [11]:
Copied!
from cytoolz import keyfilter
with open("../data/external/stopwords-es.txt", "rt") as f:
stopwords = set(f.read().split("\n"))
stopwords.update(
[
"artículo",
"capítulo",
"n°", '°'
"inciso",
"dicha",
"año",
"refiere",
"ley",
"orgánica",
"plazo",
"siguientes",
"siguiente", 'inciso', 'número', 'efecto', 'fecha', 'años', 'procederá', 'mayo', 'dichas', 'formas',
"incisos", 'deberán', 'deber', 'º', 'nº', 'ámbito', 'ámbitos', 'áreas', 'velar', 'ad', 'única', 'únicas', 'único', 'útiles', 'constitución', 'constitucional', 'deberá', 'determinará',
]
)
filtered_prev_tokens = keyfilter(lambda x: not x.lower() in stopwords, prev_tokens)
filtered_next_tokens = keyfilter(lambda x: not x.lower() in stopwords, next_tokens)
from cytoolz import keyfilter
with open("../data/external/stopwords-es.txt", "rt") as f:
stopwords = set(f.read().split("\n"))
stopwords.update(
[
"artículo",
"capítulo",
"n°", '°'
"inciso",
"dicha",
"año",
"refiere",
"ley",
"orgánica",
"plazo",
"siguientes",
"siguiente", 'inciso', 'número', 'efecto', 'fecha', 'años', 'procederá', 'mayo', 'dichas', 'formas',
"incisos", 'deberán', 'deber', 'º', 'nº', 'ámbito', 'ámbitos', 'áreas', 'velar', 'ad', 'única', 'únicas', 'único', 'útiles', 'constitución', 'constitucional', 'deberá', 'determinará',
]
)
filtered_prev_tokens = keyfilter(lambda x: not x.lower() in stopwords, prev_tokens)
filtered_next_tokens = keyfilter(lambda x: not x.lower() in stopwords, next_tokens)
In [12]:
Copied!
freq_table = (
pd.DataFrame(filtered_prev_tokens.items(), columns=["word", "freq_prev"])
.set_index("word")
.join(
pd.DataFrame(
filtered_next_tokens.items(), columns=["word", "freq_next"]
).set_index("word"),
how="outer",
)
.fillna(0)
)
freq_table
freq_table = (
pd.DataFrame(filtered_prev_tokens.items(), columns=["word", "freq_prev"])
.set_index("word")
.join(
pd.DataFrame(
filtered_next_tokens.items(), columns=["word", "freq_next"]
).set_index("word"),
how="outer",
)
.fillna(0)
)
freq_table
Out[12]:
| freq_prev | freq_next | |
|---|---|---|
| word | ||
| abandono | 1.0 | 2.0 |
| abarca | 0.0 | 1.0 |
| abastecimiento | 1.0 | 2.0 |
| abierta | 1.0 | 3.0 |
| abierto | 1.0 | 4.0 |
| ... | ... | ... |
| óptima | 0.0 | 1.0 |
| óptimas | 0.0 | 1.0 |
| órdenes | 8.0 | 6.0 |
| órgano | 10.0 | 35.0 |
| órganos | 18.0 | 66.0 |
5698 rows × 2 columns
In [13]:
Copied!
import numpy as np
from aves.features.utils import normalize_columns, normalize_rows
table_n = freq_table.sum(axis=1)
freq_table = freq_table.pipe(normalize_rows)
freq_table["tendency"] = freq_table["freq_next"] - freq_table["freq_prev"]
freq_table["n"] = table_n
freq_table.sort_values("n")
freq_table
import numpy as np
from aves.features.utils import normalize_columns, normalize_rows
table_n = freq_table.sum(axis=1)
freq_table = freq_table.pipe(normalize_rows)
freq_table["tendency"] = freq_table["freq_next"] - freq_table["freq_prev"]
freq_table["n"] = table_n
freq_table.sort_values("n")
freq_table
Out[13]:
| freq_prev | freq_next | tendency | n | |
|---|---|---|---|---|
| word | ||||
| abandono | 0.333333 | 0.666667 | 0.333333 | 3.0 |
| abarca | 0.000000 | 1.000000 | 1.000000 | 1.0 |
| abastecimiento | 0.333333 | 0.666667 | 0.333333 | 3.0 |
| abierta | 0.250000 | 0.750000 | 0.500000 | 4.0 |
| abierto | 0.200000 | 0.800000 | 0.600000 | 5.0 |
| ... | ... | ... | ... | ... |
| óptima | 0.000000 | 1.000000 | 1.000000 | 1.0 |
| óptimas | 0.000000 | 1.000000 | 1.000000 | 1.0 |
| órdenes | 0.571429 | 0.428571 | -0.142857 | 14.0 |
| órgano | 0.222222 | 0.777778 | 0.555556 | 45.0 |
| órganos | 0.214286 | 0.785714 | 0.571429 | 84.0 |
5698 rows × 4 columns
In [14]:
Copied!
freq_table['n'].plot(kind='hist', bins=100)
freq_table['n'].plot(kind='hist', bins=100)
Out[14]:
<AxesSubplot:ylabel='Frequency'>
In [15]:
Copied!
freq_table.sort_values('n').tail(15)
freq_table.sort_values('n').tail(15)
Out[15]:
| freq_prev | freq_next | tendency | n | |
|---|---|---|---|---|
| word | ||||
| funciones | 0.493750 | 0.506250 | 0.012500 | 160.0 |
| cargo | 0.515528 | 0.484472 | -0.031056 | 161.0 |
| electoral | 0.817143 | 0.182857 | -0.634286 | 175.0 |
| forma | 0.477273 | 0.522727 | 0.045455 | 176.0 |
| diputados | 0.427778 | 0.572222 | 0.144444 | 180.0 |
| congreso | 0.375000 | 0.625000 | 0.250000 | 192.0 |
| caso | 0.651376 | 0.348624 | -0.302752 | 218.0 |
| personas | 0.298643 | 0.701357 | 0.402715 | 221.0 |
| nacional | 0.560000 | 0.440000 | -0.120000 | 225.0 |
| regional | 0.379310 | 0.620690 | 0.241379 | 232.0 |
| derechos | 0.136364 | 0.863636 | 0.727273 | 242.0 |
| ejercicio | 0.437984 | 0.562016 | 0.124031 | 258.0 |
| presidente | 0.649842 | 0.350158 | -0.299685 | 317.0 |
| república | 0.628931 | 0.371069 | -0.257862 | 318.0 |
| derecho | 0.257971 | 0.742029 | 0.484058 | 345.0 |
In [16]:
Copied!
import matplotlib.pyplot as plt
from aves.visualization.tables import bubble_plot
fig, ax = plt.subplots(figsize=(24 * 1.2, 12 * 1.2))
left_color, right_color = ['#fbc4a6', '#e5d6e5']
bubble_plot(
ax,
freq_table[freq_table["n"] >= 15].reset_index().sort_values("n", ascending=False),
"tendency",
"n",
label_column="word",
palette="cool",
dual=True,
dual_left_color=left_color,
dual_right_color=right_color,
max_label_size=46,
min_label_size=0,
starting_y_range=3,
margin=5,
x_position_scaling=320,
fontname="Source Serif Pro",
fontstyle="italic",
)
ax.set_title(
"¿Cuáles palabras se usan en las Constituciones? (considerando al menos 15 apariciones)",
loc="left",
fontname="Source Serif Pro",
fontsize=32,
)
ax.set_title(
"Por @ZorzalErrante (16/05/2022, github/ZorzalErrante/aves)",
loc="right",
fontname="Source Serif Pro",
fontsize=14,
color="#abacab",
)
ax.set_axis_off()
ax.annotate(
"Más usado en el Borrador 2022 →",
(0.95, 0.01),
xycoords="axes fraction",
ha="right",
va="bottom",
fontsize=18,
fontname="Source Serif Pro",
fontweight="bold",
color="black",
)
ax.annotate(
"← Más usado en la Actual 2005 (actualizada 2022)",
(0.05, 0.01),
xycoords="axes fraction",
ha="left",
va="bottom",
fontsize=18,
fontname="Source Serif Pro",
fontweight="bold",
color="black",
)
fig.set_facecolor("#efefef")
fig.tight_layout()
fig.savefig('bubble_cloud_constitucional.png', dpi=150, bbox_inches='tight')
import matplotlib.pyplot as plt
from aves.visualization.tables import bubble_plot
fig, ax = plt.subplots(figsize=(24 * 1.2, 12 * 1.2))
left_color, right_color = ['#fbc4a6', '#e5d6e5']
bubble_plot(
ax,
freq_table[freq_table["n"] >= 15].reset_index().sort_values("n", ascending=False),
"tendency",
"n",
label_column="word",
palette="cool",
dual=True,
dual_left_color=left_color,
dual_right_color=right_color,
max_label_size=46,
min_label_size=0,
starting_y_range=3,
margin=5,
x_position_scaling=320,
fontname="Source Serif Pro",
fontstyle="italic",
)
ax.set_title(
"¿Cuáles palabras se usan en las Constituciones? (considerando al menos 15 apariciones)",
loc="left",
fontname="Source Serif Pro",
fontsize=32,
)
ax.set_title(
"Por @ZorzalErrante (16/05/2022, github/ZorzalErrante/aves)",
loc="right",
fontname="Source Serif Pro",
fontsize=14,
color="#abacab",
)
ax.set_axis_off()
ax.annotate(
"Más usado en el Borrador 2022 →",
(0.95, 0.01),
xycoords="axes fraction",
ha="right",
va="bottom",
fontsize=18,
fontname="Source Serif Pro",
fontweight="bold",
color="black",
)
ax.annotate(
"← Más usado en la Actual 2005 (actualizada 2022)",
(0.05, 0.01),
xycoords="axes fraction",
ha="left",
va="bottom",
fontsize=18,
fontname="Source Serif Pro",
fontweight="bold",
color="black",
)
fig.set_facecolor("#efefef")
fig.tight_layout()
fig.savefig('bubble_cloud_constitucional.png', dpi=150, bbox_inches='tight')
In [17]:
Copied!
non_freq_words = freq_table[freq_table['n'] < 15].pipe(lambda x: x.mul(x['n'], axis='index')).drop(['tendency', 'n'], axis=1)
non_freq_words
non_freq_words = freq_table[freq_table['n'] < 15].pipe(lambda x: x.mul(x['n'], axis='index')).drop(['tendency', 'n'], axis=1)
non_freq_words
Out[17]:
| freq_prev | freq_next | |
|---|---|---|
| word | ||
| abandono | 1.0 | 2.0 |
| abarca | 0.0 | 1.0 |
| abastecimiento | 1.0 | 2.0 |
| abierta | 1.0 | 3.0 |
| abierto | 1.0 | 4.0 |
| ... | ... | ... |
| ñuble | 2.0 | 0.0 |
| ó | 3.0 | 0.0 |
| óptima | 0.0 | 1.0 |
| óptimas | 0.0 | 1.0 |
| órdenes | 8.0 | 6.0 |
5109 rows × 2 columns
In [18]:
Copied!
from aves.visualization.text import draw_wordcloud
from aves.visualization.text import draw_wordcloud
In [19]:
Copied!
from matplotlib.font_manager import FontProperties
from matplotlib.font_manager import FontProperties
In [20]:
Copied!
fig, axes = plt.subplots(1, 2, figsize=(16 * 1.5, 9 * 1.5))
axes = axes.flatten()
axes[0].set_title(
"Constitución Actual (2005, 2022)",
loc="left",
fontname="Source Serif Pro",
fontsize=14,
)
axes[1].set_title(
"Borrador de Nueva Constitución",
loc="left",
fontname="Source Serif Pro",
fontsize=14,
)
axes[1].set_title(
"Por @ZorzalErrante (16/05/2022)",
loc="right",
fontname="Source Serif Pro",
fontsize=12,
color="#abacab",
)
axes[0].set_axis_off()
axes[1].set_axis_off()
fig.suptitle(
"Palabras exclusivas de cada Constitución (freq. menor a 15)",
fontname="Source Serif Pro",
fontsize=24,
y=1.01
)
fig.tight_layout()
draw_wordcloud(
axes[0],
non_freq_words[non_freq_words["freq_next"] == 0]["freq_prev"].to_dict(),
fontname=FontProperties(family="Source Serif Pro", style="italic"),
cmap="Oranges_r",
max_words=1500,
relative_scaling=0.4,
)
draw_wordcloud(
axes[1],
non_freq_words[non_freq_words["freq_prev"] == 0]["freq_next"].to_dict(),
fontname=FontProperties(family="Source Serif Pro", style="italic"),
cmap="Purples_r",
max_words=1500,
relative_scaling=0.4,
)
fig.set_facecolor("white")
fig.savefig("word_cloud_constitucional.png", dpi=150, bbox_inches="tight")
fig, axes = plt.subplots(1, 2, figsize=(16 * 1.5, 9 * 1.5))
axes = axes.flatten()
axes[0].set_title(
"Constitución Actual (2005, 2022)",
loc="left",
fontname="Source Serif Pro",
fontsize=14,
)
axes[1].set_title(
"Borrador de Nueva Constitución",
loc="left",
fontname="Source Serif Pro",
fontsize=14,
)
axes[1].set_title(
"Por @ZorzalErrante (16/05/2022)",
loc="right",
fontname="Source Serif Pro",
fontsize=12,
color="#abacab",
)
axes[0].set_axis_off()
axes[1].set_axis_off()
fig.suptitle(
"Palabras exclusivas de cada Constitución (freq. menor a 15)",
fontname="Source Serif Pro",
fontsize=24,
y=1.01
)
fig.tight_layout()
draw_wordcloud(
axes[0],
non_freq_words[non_freq_words["freq_next"] == 0]["freq_prev"].to_dict(),
fontname=FontProperties(family="Source Serif Pro", style="italic"),
cmap="Oranges_r",
max_words=1500,
relative_scaling=0.4,
)
draw_wordcloud(
axes[1],
non_freq_words[non_freq_words["freq_prev"] == 0]["freq_next"].to_dict(),
fontname=FontProperties(family="Source Serif Pro", style="italic"),
cmap="Purples_r",
max_words=1500,
relative_scaling=0.4,
)
fig.set_facecolor("white")
fig.savefig("word_cloud_constitucional.png", dpi=150, bbox_inches="tight")
In [ ]:
Copied!
In [98]:
Copied!
import gensim
model = gensim.models.KeyedVectors.load_word2vec_format('../data/external/SUC/embeddings-l-model.vec', limit=100000)
import gensim
model = gensim.models.KeyedVectors.load_word2vec_format('../data/external/SUC/embeddings-l-model.vec', limit=100000)
In [99]:
Copied!
model.most_similar('chile')
model.most_similar('chile')
Out[99]:
[('chilena', 0.7510282397270203),
('bolivia', 0.7396069169044495),
('argentina', 0.7372022867202759),
('chileno', 0.7328869700431824),
('valparaíso', 0.7163181304931641),
('antofagasta', 0.7149254679679871),
('perú', 0.7068778872489929),
('ecuador', 0.7008522152900696),
('coquimbo', 0.6886277198791504),
('talca', 0.6781579256057739)]
In [100]:
Copied!
model.get_vector('chile')
model.get_vector('chile')
Out[100]:
array([-1.3527e-01, -6.0242e-02, 8.5268e-02, -4.2575e-01, 1.7024e-01,
-1.3394e-01, 2.2051e-01, 2.3477e-01, -9.6419e-02, -3.7508e-01,
-2.7630e-01, 3.7468e-01, -2.2590e-02, -3.9733e-01, -1.4961e-03,
1.4847e-01, -1.3382e-01, 1.1267e-02, 1.4115e-01, -3.4780e-01,
-9.1534e-02, 3.5300e-01, -2.1072e-01, -1.7912e-01, -3.1440e-01,
1.0803e-01, 3.8448e-01, 3.4037e-01, -3.8266e-01, 3.0840e-01,
-1.7285e-01, 5.5447e-02, -6.9741e-02, 1.0933e-01, 2.6570e-01,
-3.2142e-03, -4.0988e-01, 1.5294e-01, -3.5732e-01, -1.4395e-01,
-7.0704e-02, 1.1932e-01, 5.6021e-02, -5.3776e-01, -6.2461e-01,
-1.4389e-01, 3.1190e-01, -1.5600e-01, 2.8145e-01, -1.6762e-01,
3.3591e-01, -5.7117e-01, -6.2980e-02, -1.3729e-01, 9.1251e-02,
1.2341e-01, -2.4211e-01, 2.5406e-02, 1.7031e-01, 2.2495e-01,
-2.7676e-02, 2.7510e-02, -9.0400e-02, 1.5116e-01, -2.9838e-01,
3.7293e-02, 1.3478e-01, -1.1015e-01, -1.8851e-01, 4.5792e-03,
2.6185e-01, -5.9791e-02, -4.5494e-01, 2.1894e-01, 5.5635e-02,
-4.1388e-01, -1.6001e-01, -9.7399e-02, 2.2742e-01, -1.9975e-01,
4.6078e-02, -1.6197e-01, -2.4230e-01, 3.1416e-02, -4.5676e-01,
3.9514e-01, 1.7684e-01, -3.3037e-01, 5.3164e-03, -5.8591e-02,
2.1913e-02, 3.5689e-01, -3.4717e-01, 1.6174e-01, -1.3919e-01,
2.8916e-01, -1.7741e-01, -1.3059e-01, 2.1035e-01, -3.5451e-01,
-1.5701e-01, 9.8772e-03, -1.9750e-01, 4.8548e-01, 3.1805e-01,
4.9242e-02, -8.7828e-02, 5.4587e-02, -3.9788e-01, -1.0047e-02,
-1.8965e-02, 7.6300e-02, -3.2277e-02, 1.0416e-01, -2.4675e-01,
-3.0966e-01, -4.2329e-01, 3.9665e-01, -3.4452e-01, -3.9526e-02,
2.8786e-01, 9.3185e-02, 4.3950e-02, 2.5615e-03, 1.2754e-01,
1.5702e-01, -4.5265e-01, 1.7603e-01, 3.0953e-01, -1.2744e-01,
3.0957e-01, 4.0282e-01, 2.3513e-01, 2.7485e-02, -6.5010e-01,
3.5084e-01, 7.4025e-02, 4.3053e-02, -9.9831e-02, 6.6538e-02,
-1.8815e-02, -2.4522e-02, -6.2816e-02, 1.3020e-01, 2.0679e-01,
-4.5859e-02, -1.3580e-01, -1.7728e-02, -5.0710e-02, 2.1117e-01,
2.3700e-02, -1.3044e-02, 3.7144e-02, 2.3900e-01, -1.1544e-01,
-1.2091e-01, -5.8807e-02, -3.6055e-01, 2.2358e-01, -2.7774e-01,
4.2002e-01, -5.4068e-01, -2.3292e-01, 4.0195e-02, 2.7525e-01,
1.7500e-02, -1.4783e-01, 5.3589e-01, 9.3267e-02, -3.4591e-01,
-5.1793e-02, 5.5843e-02, 1.4971e-01, 8.5165e-02, 2.6374e-02,
-2.3857e-01, 2.1592e-01, 6.0158e-02, 1.9729e-01, 6.4409e-02,
1.7378e-01, 2.6465e-02, 2.1724e-01, -1.1232e-01, -2.1668e-01,
-2.4113e-02, -1.7001e-01, 1.7674e-02, -3.2060e-01, 1.0536e-01,
-1.3449e-01, -3.4020e-01, -5.0500e-01, -4.4414e-02, 5.8498e-02,
-1.1750e-01, -1.4703e-01, -3.8582e-01, 4.1380e-01, -1.8479e-01,
-3.0830e-01, 7.8006e-03, 1.2574e-01, 2.0096e-01, -3.7146e-01,
-2.8843e-01, -8.1678e-02, 2.1898e-01, 2.7032e-01, 5.4689e-01,
-1.0016e-02, 2.0060e-01, -2.5638e-01, -6.4684e-02, -3.9634e-01,
2.5021e-01, 3.8536e-01, -6.2733e-04, 1.9459e-01, -6.3061e-01,
1.1947e-01, 1.5508e-01, -2.4174e-01, -5.0489e-01, -9.0695e-03,
-4.2366e-01, -2.3098e-02, -1.9087e-01, 2.8140e-01, -1.6085e-01,
1.7614e-01, -1.2214e-01, 2.9669e-02, 5.0589e-01, -5.4286e-01,
-1.9546e-01, -1.9703e-01, 4.0778e-02, 1.8570e-01, -4.7003e-02,
-2.5776e-01, 2.3604e-01, 2.0806e-01, -2.4708e-02, -9.5911e-02,
3.9210e-01, -3.9764e-01, -8.5709e-02, -4.3577e-01, 2.1474e-02,
1.2804e-01, 3.5299e-01, 8.6107e-02, 4.9387e-01, 1.5737e-01,
-2.5957e-01, 2.5515e-01, 2.9186e-01, 2.3437e-02, -1.1042e-02,
1.4336e-01, 1.2877e-01, 7.3884e-02, 5.4614e-02, -2.1643e-02,
-3.0745e-02, 1.3820e-01, 1.8144e-01, -3.2218e-01, 7.2130e-02,
2.9160e-01, -5.3525e-01, 3.1988e-01, 1.1927e-01, -7.1914e-02,
7.9455e-02, -7.4072e-02, 2.4332e-01, -1.0682e-01, 9.3825e-02,
1.0650e-01, -3.3755e-01, -1.2687e-01, -1.1540e-01, -5.8886e-02,
1.0124e-01, 6.8532e-02, 4.7805e-01, 7.8572e-03, 1.5265e-01,
-5.1850e-01, 2.7954e-01, 6.6157e-01, -2.9961e-01, -9.0811e-02,
1.4695e-01, 5.0800e-02, 1.1818e-03, 4.1721e-01, 4.9212e-02],
dtype=float32)
In [101]:
Copied!
model.has_index_for('chile'), model.has_index_for('chuchunco_city')
model.has_index_for('chile'), model.has_index_for('chuchunco_city')
Out[101]:
(True, False)
In [102]:
Copied!
valid_words = freq_table.index.map(model.has_index_for)
valid_words.value_counts()
valid_words = freq_table.index.map(model.has_index_for)
valid_words.value_counts()
Out[102]:
True 5225 False 473 Name: word, dtype: int64
In [103]:
Copied!
freq_table[valid_words]
freq_table[valid_words]
Out[103]:
| freq_prev | freq_next | tendency | n | |
|---|---|---|---|---|
| word | ||||
| abandono | 0.333333 | 0.666667 | 0.333333 | 3.0 |
| abarca | 0.000000 | 1.000000 | 1.000000 | 1.0 |
| abastecimiento | 0.333333 | 0.666667 | 0.333333 | 3.0 |
| abierta | 0.250000 | 0.750000 | 0.500000 | 4.0 |
| abierto | 0.200000 | 0.800000 | 0.600000 | 5.0 |
| ... | ... | ... | ... | ... |
| óptima | 0.000000 | 1.000000 | 1.000000 | 1.0 |
| óptimas | 0.000000 | 1.000000 | 1.000000 | 1.0 |
| órdenes | 0.571429 | 0.428571 | -0.142857 | 14.0 |
| órgano | 0.222222 | 0.777778 | 0.555556 | 45.0 |
| órganos | 0.214286 | 0.785714 | 0.571429 | 84.0 |
5225 rows × 4 columns
In [104]:
Copied!
embeddings = pd.DataFrame.from_records(
freq_table[valid_words].index.map(model.get_vector)
).set_index(freq_table[valid_words].index)
embeddings
embeddings = pd.DataFrame.from_records(
freq_table[valid_words].index.map(model.get_vector)
).set_index(freq_table[valid_words].index)
embeddings
Out[104]:
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | ... | 290 | 291 | 292 | 293 | 294 | 295 | 296 | 297 | 298 | 299 | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| word | |||||||||||||||||||||
| abandono | -0.178610 | -0.057417 | 0.025356 | 0.010294 | 0.29997 | 0.061768 | 0.079709 | 0.366770 | 0.192290 | -0.211770 | ... | -0.59618 | 0.117140 | 0.060026 | -0.080070 | 0.140490 | 0.237110 | 0.018811 | 0.018404 | 0.136390 | 0.370890 |
| abarca | 0.241860 | -0.301550 | -0.272980 | -0.000022 | -0.13012 | 0.002618 | 0.083539 | 0.051251 | -0.135260 | -0.289080 | ... | -0.34412 | -0.110140 | -0.002556 | 0.052457 | 0.168260 | 0.005896 | 0.083870 | 0.377530 | 0.282780 | 0.191330 |
| abastecimiento | 0.169970 | -0.053201 | 0.087831 | -0.274880 | 0.13007 | 0.056441 | 0.219800 | 0.218850 | -0.183520 | -0.145410 | ... | -0.11532 | -0.044132 | 0.599640 | 0.172880 | 0.087342 | 0.221210 | 0.294190 | 0.061005 | 0.185350 | -0.050393 |
| abierta | -0.306430 | -0.300010 | 0.368600 | 0.067488 | 0.19529 | 0.022116 | 0.496700 | 0.656660 | -0.095078 | 0.315180 | ... | -0.14929 | -0.086153 | 0.165040 | 0.088649 | -0.029322 | 0.098184 | 0.035784 | 0.217040 | -0.093839 | 0.168520 |
| abierto | -0.345190 | -0.154380 | 0.242580 | 0.272650 | 0.47818 | -0.213550 | 0.091742 | 0.362470 | -0.137470 | 0.186370 | ... | -0.29176 | -0.238690 | -0.135570 | 0.095596 | 0.057617 | 0.115080 | -0.275830 | 0.349940 | 0.040290 | 0.227380 |
| ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
| óptima | 0.058985 | 0.203850 | -0.012463 | -0.515870 | 0.23532 | -0.226160 | -0.018092 | 0.540700 | 0.063442 | -0.160440 | ... | -0.26813 | -0.109050 | 0.188970 | 0.077659 | -0.136620 | -0.084490 | 0.040666 | 0.323590 | 0.436310 | -0.372990 |
| óptimas | -0.087515 | 0.121530 | -0.357640 | -0.530590 | 0.45155 | -0.068134 | 0.071508 | 0.140610 | 0.209440 | -0.098230 | ... | -0.15738 | 0.102090 | 0.271850 | 0.089374 | -0.195110 | 0.381950 | -0.237210 | 0.114900 | 0.616820 | -0.254510 |
| órdenes | -0.094071 | -0.323520 | -0.121570 | 0.171100 | -0.18491 | 0.175360 | 0.193500 | 0.168250 | 0.064675 | 0.436430 | ... | -0.25833 | 0.153830 | -0.401770 | -0.042854 | -0.461620 | 0.178910 | 0.036568 | -0.020696 | 0.182110 | 0.537610 |
| órgano | -0.249760 | -0.277650 | -0.187020 | -0.319020 | 0.32915 | 0.452260 | 0.136530 | 0.515060 | 0.111620 | 0.104020 | ... | 0.23899 | 0.286750 | -0.187800 | -0.250170 | -0.138940 | 0.150010 | 0.136450 | 0.133410 | 0.277260 | -0.369920 |
| órganos | 0.259920 | 0.105030 | -0.270090 | -0.562180 | 0.43173 | -0.037926 | -0.075228 | 0.256980 | 0.066847 | 0.014623 | ... | 0.26671 | 0.068337 | -0.006510 | 0.040062 | -0.025835 | -0.139760 | 0.017778 | -0.107680 | 0.499350 | -0.436020 |
5225 rows × 300 columns
In [105]:
Copied!
from sklearn.decomposition import PCA
pca_embeddings = pd.DataFrame(PCA(n_components=2).fit_transform(embeddings), index=embeddings.index, columns=['x', 'y'])
pca_embeddings
from sklearn.decomposition import PCA
pca_embeddings = pd.DataFrame(PCA(n_components=2).fit_transform(embeddings), index=embeddings.index, columns=['x', 'y'])
pca_embeddings
Out[105]:
| x | y | |
|---|---|---|
| word | ||
| abandono | -0.690310 | 0.092454 |
| abarca | 0.079881 | -0.687036 |
| abastecimiento | 0.086007 | -1.233221 |
| abierta | -0.779788 | 0.101587 |
| abierto | -0.865299 | 0.085289 |
| ... | ... | ... |
| óptima | 0.200794 | -1.196673 |
| óptimas | 0.580088 | -1.682480 |
| órdenes | -0.707578 | 0.692311 |
| órgano | 0.171857 | 0.183736 |
| órganos | 0.633352 | -0.596291 |
5225 rows × 2 columns
In [106]:
Copied!
ax = pca_embeddings.plot(x='x', y='y', kind='scatter', figsize=(18, 12), color=freq_table[valid_words]['freq_next'], cmap='Purples', alpha=0.1)
for idx, row in pca_embeddings.sample(15).iterrows():
ax.annotate(idx, row.values)
ax = pca_embeddings.plot(x='x', y='y', kind='scatter', figsize=(18, 12), color=freq_table[valid_words]['freq_next'], cmap='Purples', alpha=0.1)
for idx, row in pca_embeddings.sample(15).iterrows():
ax.annotate(idx, row.values)
/home/egraells/miniconda3/envs/aves/lib/python3.8/site-packages/pandas/plotting/_matplotlib/core.py:244: UserWarning: 'color' and 'colormap' cannot be used simultaneously. Using 'color' warnings.warn(
In [124]:
Copied!
import umap
umap_embeddings = pd.DataFrame(
umap.UMAP(
n_components=2, n_neighbors=10, metric="cosine", random_state=2022
).fit_transform(PCA(n_components=100).fit_transform(embeddings)),
index=embeddings.index,
columns=["x", "y"],
)
ax = umap_embeddings.plot(
x="x",
y="y",
kind="scatter",
figsize=(18, 12),
color=freq_table[valid_words]["tendency"],
cmap="PuOr",
alpha=0.1,
)
for idx, row in umap_embeddings.sample(15).iterrows():
ax.annotate(idx, row.values)
import umap
umap_embeddings = pd.DataFrame(
umap.UMAP(
n_components=2, n_neighbors=10, metric="cosine", random_state=2022
).fit_transform(PCA(n_components=100).fit_transform(embeddings)),
index=embeddings.index,
columns=["x", "y"],
)
ax = umap_embeddings.plot(
x="x",
y="y",
kind="scatter",
figsize=(18, 12),
color=freq_table[valid_words]["tendency"],
cmap="PuOr",
alpha=0.1,
)
for idx, row in umap_embeddings.sample(15).iterrows():
ax.annotate(idx, row.values)
/home/egraells/miniconda3/envs/aves/lib/python3.8/site-packages/pandas/plotting/_matplotlib/core.py:244: UserWarning: 'color' and 'colormap' cannot be used simultaneously. Using 'color' warnings.warn(
In [125]:
Copied!
import hdbscan
clusters = pd.Series(
hdbscan.HDBSCAN(min_cluster_size=int(np.log(len(embeddings)))).fit_predict(
umap_embeddings
),
index=embeddings.index,
)
clusters.value_counts()
import hdbscan
clusters = pd.Series(
hdbscan.HDBSCAN(min_cluster_size=int(np.log(len(embeddings)))).fit_predict(
umap_embeddings
),
index=embeddings.index,
)
clusters.value_counts()
Out[125]:
-1 1922
20 287
25 230
17 101
59 84
...
7 9
4 8
26 8
28 8
44 8
Length: 121, dtype: int64
In [126]:
Copied!
clusters.value_counts() >= 50
clusters.value_counts() >= 50
Out[126]:
-1 True
20 True
25 True
17 True
59 True
...
7 False
4 False
26 False
28 False
44 False
Length: 121, dtype: bool
In [127]:
Copied!
cluster_counts = clusters.value_counts().drop(-1)
big_clusters = cluster_counts[cluster_counts >= 20].index
big_clusters
cluster_counts = clusters.value_counts().drop(-1)
big_clusters = cluster_counts[cluster_counts >= 20].index
big_clusters
Out[127]:
Int64Index([ 20, 25, 17, 59, 51, 111, 12, 104, 81, 62, 75, 100, 2,
54, 37, 112, 105, 31, 79, 113, 53, 10, 119, 45, 90, 106,
101, 55, 93, 103, 98, 76, 110, 97, 116, 72, 21, 117, 92,
68, 73, 36, 16, 91, 109, 77, 64, 57, 18, 70, 48, 52,
33, 115, 107, 3, 65, 5, 118, 96, 82],
dtype='int64')
In [128]:
Copied!
clustered_embeddings = umap_embeddings.assign(cluster=clusters).pipe(
lambda x: x[x["cluster"].isin(big_clusters)]
)
clustered_embeddings
clustered_embeddings = umap_embeddings.assign(cluster=clusters).pipe(
lambda x: x[x["cluster"].isin(big_clusters)]
)
clustered_embeddings
Out[128]:
| x | y | cluster | |
|---|---|---|---|
| word | |||
| abandono | 10.958534 | 1.832223 | 12 |
| abastecimiento | 7.072779 | 3.557625 | 70 |
| abogada | 11.938313 | 3.789650 | 31 |
| abogado | 11.930475 | 3.736832 | 31 |
| abogados | 11.865667 | 3.817639 | 31 |
| ... | ... | ... | ... |
| íntegro | 9.816101 | 1.919488 | 101 |
| ítem | 10.569655 | 0.880064 | 59 |
| ñ | 8.526119 | 5.777063 | 10 |
| ñuble | 7.347141 | 5.960625 | 5 |
| óptimas | 9.084637 | 1.197614 | 115 |
2530 rows × 3 columns
In [129]:
Copied!
import seaborn as sns
cluster_colors = sns.husl_palette(n_colors=len(big_clusters), l=0.5)
sns.palplot(cluster_colors)
import seaborn as sns
cluster_colors = sns.husl_palette(n_colors=len(big_clusters), l=0.5)
sns.palplot(cluster_colors)
In [130]:
Copied!
import alphashape
from descartes import PolygonPatch
import alphashape
from descartes import PolygonPatch
In [131]:
Copied!
ax = umap_embeddings.plot(x='x', y='y', kind='scatter', figsize=(18, 12), color='#efefef')
ax.set_xlim(clustered_embeddings['x'].min(), clustered_embeddings['x'].max())
ax.set_ylim(clustered_embeddings['y'].min(), clustered_embeddings['y'].max())
for c_id, color in zip(big_clusters, cluster_colors):
clustered = umap_embeddings.loc[clusters == c_id]
#if clustered.empty or len(clustered) < 50:
# continue
clustered.plot(x='x', y='y', kind='scatter', color=color, ax=ax)
alpha_shape = alphashape.alphashape(clustered.values, 2.).buffer(0.1)
ax.add_patch(PolygonPatch(alpha_shape, alpha=0.2))
for idx, row in clustered.sample(5).iterrows():
ax.annotate(idx, row.values)
#break
ax = umap_embeddings.plot(x='x', y='y', kind='scatter', figsize=(18, 12), color='#efefef')
ax.set_xlim(clustered_embeddings['x'].min(), clustered_embeddings['x'].max())
ax.set_ylim(clustered_embeddings['y'].min(), clustered_embeddings['y'].max())
for c_id, color in zip(big_clusters, cluster_colors):
clustered = umap_embeddings.loc[clusters == c_id]
#if clustered.empty or len(clustered) < 50:
# continue
clustered.plot(x='x', y='y', kind='scatter', color=color, ax=ax)
alpha_shape = alphashape.alphashape(clustered.values, 2.).buffer(0.1)
ax.add_patch(PolygonPatch(alpha_shape, alpha=0.2))
for idx, row in clustered.sample(5).iterrows():
ax.annotate(idx, row.values)
#break
/home/egraells/miniconda3/envs/aves/lib/python3.8/site-packages/descartes/patch.py:62: ShapelyDeprecationWarning: The array interface is deprecated and will no longer work in Shapely 2.0. Convert the '.coords' to a numpy array instead. vertices = concatenate([
In [132]:
Copied!
cluster_freqs = (
freq_table.join(clusters.rename("cluster"), how="inner")
.groupby("cluster")[["freq_prev", "freq_next"]]
.sum()
.pipe(normalize_rows)
.assign(tendency=lambda x: x['freq_next'] - x['freq_prev'])
)
cluster_freqs
cluster_freqs = (
freq_table.join(clusters.rename("cluster"), how="inner")
.groupby("cluster")[["freq_prev", "freq_next"]]
.sum()
.pipe(normalize_rows)
.assign(tendency=lambda x: x['freq_next'] - x['freq_prev'])
)
cluster_freqs
Out[132]:
| freq_prev | freq_next | tendency | |
|---|---|---|---|
| cluster | |||
| -1 | 0.428981 | 0.571019 | 0.142038 |
| 0 | 0.983333 | 0.016667 | -0.966667 |
| 1 | 0.945714 | 0.054286 | -0.891429 |
| 2 | 0.637915 | 0.362085 | -0.275829 |
| 3 | 0.902778 | 0.097222 | -0.805556 |
| ... | ... | ... | ... |
| 115 | 0.272200 | 0.727800 | 0.455600 |
| 116 | 0.316189 | 0.683811 | 0.367623 |
| 117 | 0.223248 | 0.776752 | 0.553505 |
| 118 | 0.199162 | 0.800838 | 0.601675 |
| 119 | 0.397146 | 0.602854 | 0.205707 |
121 rows × 3 columns
In [133]:
Copied!
cluster_freqs
cluster_freqs
Out[133]:
| freq_prev | freq_next | tendency | |
|---|---|---|---|
| cluster | |||
| -1 | 0.428981 | 0.571019 | 0.142038 |
| 0 | 0.983333 | 0.016667 | -0.966667 |
| 1 | 0.945714 | 0.054286 | -0.891429 |
| 2 | 0.637915 | 0.362085 | -0.275829 |
| 3 | 0.902778 | 0.097222 | -0.805556 |
| ... | ... | ... | ... |
| 115 | 0.272200 | 0.727800 | 0.455600 |
| 116 | 0.316189 | 0.683811 | 0.367623 |
| 117 | 0.223248 | 0.776752 | 0.553505 |
| 118 | 0.199162 | 0.800838 | 0.601675 |
| 119 | 0.397146 | 0.602854 | 0.205707 |
121 rows × 3 columns
In [134]:
Copied!
cluster_freqs['tendency'].describe()
cluster_freqs['tendency'].describe()
Out[134]:
count 121.000000 mean 0.099543 std 0.398295 min -0.966667 25% -0.185556 50% 0.111111 75% 0.379559 max 0.909091 Name: tendency, dtype: float64
In [135]:
Copied!
cluster_freqs['bin'] = pd.cut(cluster_freqs['tendency'], bins=[-1, -0.1, 0.1, 1], labels=False)
cluster_freqs['bin']
cluster_freqs['bin'] = pd.cut(cluster_freqs['tendency'], bins=[-1, -0.1, 0.1, 1], labels=False)
cluster_freqs['bin']
Out[135]:
cluster
-1 2
0 0
1 0
2 0
3 0
..
115 2
116 2
117 2
118 2
119 2
Name: bin, Length: 121, dtype: int64
In [136]:
Copied!
bin_colors = sns.color_palette('PuOr', n_colors=3)
sns.palplot(bin_colors)
bin_colors = sns.color_palette('PuOr', n_colors=3)
sns.palplot(bin_colors)
In [137]:
Copied!
import matplotlib.patheffects as path_effects
from aves.visualization.collections.labels import LabelCollection
from aves.visualization.colors import categorical_color_legend
import matplotlib.font_manager as font_manager
import matplotlib.patheffects as path_effects
from aves.visualization.collections.labels import LabelCollection
from aves.visualization.colors import categorical_color_legend
import matplotlib.font_manager as font_manager
In [138]:
Copied!
fig, ax = plt.subplots(figsize=(24, 18))
delta_x = 0.05 * (clustered_embeddings["x"].max() - clustered_embeddings["x"].min())
delta_y = 0.02 * (clustered_embeddings["y"].max() - clustered_embeddings["y"].min())
umap_embeddings.plot(
x="x", y="y", kind="scatter", color="#abacab", ax=ax
)
ax.set_xlim(
clustered_embeddings["x"].min() - delta_x, clustered_embeddings["x"].max() + delta_x
)
ax.set_ylim(
clustered_embeddings["y"].min() - delta_y, clustered_embeddings["y"].max() + delta_y
)
ax.set_axis_off()
fig.set_facecolor('#fefefe')
ax.set_title('Mapa del Vocabulario Constitucional', fontname="Fira Sans Extra Condensed", fontsize=24, loc='left')
ax.set_title('Por @ZorzalErrante (20/05/2022)', fontname="Fira Sans Extra Condensed", fontsize=18, loc='right', color='#abacab')
collection = LabelCollection()
for c_id, color in zip(big_clusters, cluster_colors):
clustered = umap_embeddings.loc[clusters == c_id]
alpha_shape = alphashape.alphashape(clustered.values, 2.0).buffer(0.05)
ax.add_patch(
PolygonPatch(
alpha_shape,
alpha=0.5,
facecolor=bin_colors[int(cluster_freqs.loc[c_id]["bin"])],
edgecolor="none",
)
)
clustered.plot(x="x", y="y", kind="scatter", color=bin_colors[int(cluster_freqs.loc[c_id]["bin"])], edgecolor='black', ax=ax)
centroid = clustered.mean().values
cluster_words = clustered.sample(frac=0.075).index.values
cluster_words = cluster_words[: min(4, len(cluster_words))]
collection.add_text("\n".join(cluster_words), centroid[0], centroid[1])
# break
ax.annotate('''
Cada punto es una palabra disponible en los textos constitucionales.
Su posición en la imagen depende de su significado de acuerdo a Wikipedia. Un algoritmo determina grupos de palabras, son las islas de colores de este mapa.
Cada isla tiene una tendencia en función de su contenido: si sus palabras aparecen más en el borrador de constitución propuesto se ven púrpuras;
si aparecen más en la constitución actual, se ven naranjas; si no hay grandes diferencias, se ven blancas.
Para cada isla conceptual se eligen algunas palabras de manera aleatoria para caracterizarla.
Fuentes: Constitución actual (2005-2022), Borrador de Propuesta de Constitución (2022), Wikipedia2Vec (2018).
'''.strip(), (0.01, 0.01), xycoords='axes fraction', ha='left', va='bottom', fontname='Fira Sans Extra Condensed', fontsize=12, color='#abacab')
# fig.tight_layout()
collection.render(
ax,
avoid_collisions=True,
color="white",
fontsize=14,
fontname="Fira Sans Extra Condensed",
fontstyle='italic',
outline_args={"linewidth": 3, "foreground": "black"},
adjustment_args={"lim": 100, "arrowprops": dict(arrowstyle="->", color="black", lw=1)},
outline=True,
)
font = font_manager.FontProperties(family='Fira Sans Extra Condensed',
weight='normal',
style='normal', size=10)
categorical_color_legend(ax, bin_colors, labels=['Conceptos asociados a Constitución Actual', 'Conceptos presentes por igual en ambos textos', 'Conceptos asociados a Borrador Propuesto el 2022'], loc='upper right', prop=font)
fig.savefig('conceptual_map.png', dpi=150, bbox_inches='tight')
fig, ax = plt.subplots(figsize=(24, 18))
delta_x = 0.05 * (clustered_embeddings["x"].max() - clustered_embeddings["x"].min())
delta_y = 0.02 * (clustered_embeddings["y"].max() - clustered_embeddings["y"].min())
umap_embeddings.plot(
x="x", y="y", kind="scatter", color="#abacab", ax=ax
)
ax.set_xlim(
clustered_embeddings["x"].min() - delta_x, clustered_embeddings["x"].max() + delta_x
)
ax.set_ylim(
clustered_embeddings["y"].min() - delta_y, clustered_embeddings["y"].max() + delta_y
)
ax.set_axis_off()
fig.set_facecolor('#fefefe')
ax.set_title('Mapa del Vocabulario Constitucional', fontname="Fira Sans Extra Condensed", fontsize=24, loc='left')
ax.set_title('Por @ZorzalErrante (20/05/2022)', fontname="Fira Sans Extra Condensed", fontsize=18, loc='right', color='#abacab')
collection = LabelCollection()
for c_id, color in zip(big_clusters, cluster_colors):
clustered = umap_embeddings.loc[clusters == c_id]
alpha_shape = alphashape.alphashape(clustered.values, 2.0).buffer(0.05)
ax.add_patch(
PolygonPatch(
alpha_shape,
alpha=0.5,
facecolor=bin_colors[int(cluster_freqs.loc[c_id]["bin"])],
edgecolor="none",
)
)
clustered.plot(x="x", y="y", kind="scatter", color=bin_colors[int(cluster_freqs.loc[c_id]["bin"])], edgecolor='black', ax=ax)
centroid = clustered.mean().values
cluster_words = clustered.sample(frac=0.075).index.values
cluster_words = cluster_words[: min(4, len(cluster_words))]
collection.add_text("\n".join(cluster_words), centroid[0], centroid[1])
# break
ax.annotate('''
Cada punto es una palabra disponible en los textos constitucionales.
Su posición en la imagen depende de su significado de acuerdo a Wikipedia. Un algoritmo determina grupos de palabras, son las islas de colores de este mapa.
Cada isla tiene una tendencia en función de su contenido: si sus palabras aparecen más en el borrador de constitución propuesto se ven púrpuras;
si aparecen más en la constitución actual, se ven naranjas; si no hay grandes diferencias, se ven blancas.
Para cada isla conceptual se eligen algunas palabras de manera aleatoria para caracterizarla.
Fuentes: Constitución actual (2005-2022), Borrador de Propuesta de Constitución (2022), Wikipedia2Vec (2018).
'''.strip(), (0.01, 0.01), xycoords='axes fraction', ha='left', va='bottom', fontname='Fira Sans Extra Condensed', fontsize=12, color='#abacab')
# fig.tight_layout()
collection.render(
ax,
avoid_collisions=True,
color="white",
fontsize=14,
fontname="Fira Sans Extra Condensed",
fontstyle='italic',
outline_args={"linewidth": 3, "foreground": "black"},
adjustment_args={"lim": 100, "arrowprops": dict(arrowstyle="->", color="black", lw=1)},
outline=True,
)
font = font_manager.FontProperties(family='Fira Sans Extra Condensed',
weight='normal',
style='normal', size=10)
categorical_color_legend(ax, bin_colors, labels=['Conceptos asociados a Constitución Actual', 'Conceptos presentes por igual en ambos textos', 'Conceptos asociados a Borrador Propuesto el 2022'], loc='upper right', prop=font)
fig.savefig('conceptual_map.png', dpi=150, bbox_inches='tight')
/home/egraells/miniconda3/envs/aves/lib/python3.8/site-packages/descartes/patch.py:62: ShapelyDeprecationWarning: The array interface is deprecated and will no longer work in Shapely 2.0. Convert the '.coords' to a numpy array instead. vertices = concatenate([
In [139]:
Copied!
list(clustered.index.values)
list(clustered.index.values)
Out[139]:
['acompañadas', 'acumulados', 'aisladas', 'aplicados', 'calificadas', 'conocidas', 'consideradas', 'creadas', 'cuidadas', 'cuyas', 'desarrolladas', 'dichos', 'generados', 'identificados', 'investigados', 'ordenadas', 'ordenados', 'reconocidas', 'sostenidas', 'sumados']
In [141]:
Copied!
for c_id, color in zip(big_clusters, cluster_colors):
clustered = umap_embeddings.loc[clusters == c_id]
most_similar = model.most_similar_cosmul(positive=list(clustered.index.values), topn=5)
#most_similar = [m for m in most_similar if m[0].startswith('ENTITY')]
print(c_id, int(cluster_freqs.loc[c_id]["bin"]), most_similar)
#break
for c_id, color in zip(big_clusters, cluster_colors):
clustered = umap_embeddings.loc[clusters == c_id]
most_similar = model.most_similar_cosmul(positive=list(clustered.index.values), topn=5)
#most_similar = [m for m in most_similar if m[0].startswith('ENTITY')]
print(c_id, int(cluster_freqs.loc[c_id]["bin"]), most_similar)
#break
20 1 [('excluyan', 6.801944784786592e-40), ('apliquen', 2.347875576976231e-40), ('atengan', 7.130787495409697e-41), ('prevengan', 6.336811785523255e-41), ('prevean', 4.629049347050601e-41)]
25 0 [('gestionará', 1.2222784993635454e-29), ('orientarán', 8.889268836850424e-30), ('seleccionarán', 5.089727286405063e-30), ('completará', 2.9332718031549045e-30), ('presentarán', 2.7007614655905058e-30)]
17 0 [('comicios', 4.983319461834661e-14), ('reelecto', 3.638743427121331e-14), ('plurinominal', 1.238369283962544e-14), ('precandidatos', 1.0018836143197742e-14), ('legislaturas', 6.636469260419553e-15)]
59 1 [('reglamentaciones', 7.331472668542505e-13), ('disposi\xadciones', 1.6296282357407266e-13), ('reglamentan', 1.4278920927590644e-13), ('derogaciones', 1.2392402371202288e-13), ('reglamentación', 1.1865874493914574e-13)]
51 0 [('amortizaciones', 6.152055254116107e-11), ('desembolsos', 5.448679701869352e-11), ('amortización', 2.433982355942721e-11), ('devengados', 1.8496038034498952e-11), ('adeudados', 1.7693230561222073e-11)]
111 2 [('objetivas', 5.74613924150813e-12), ('justificaciones', 3.4379439399490064e-12), ('inconsistencia', 3.0772858219951793e-12), ('incongruencias', 2.9655908805048536e-12), ('incongruencia', 2.9565440807372e-12)]
12 2 [('ocasionada', 7.668829460349968e-11), ('ocasionados', 7.130093737650611e-11), ('agravamiento', 7.069735075138084e-11), ('ocasionado', 5.740312045143803e-11), ('ocasionadas', 5.6336910830845355e-11)]
104 2 [('informáticas', 1.2323577713857503e-09), ('multimedia', 5.471644803911602e-10), ('inalámbricas', 5.011391857046021e-10), ('interfaces', 3.340506204985161e-10), ('multimedios', 3.3053690340345554e-10)]
81 0 [('verificadas', 1.2820159378534868e-09), ('tramitadas', 8.411449869960563e-10), ('remitidas', 7.468299867419148e-10), ('anuladas', 5.859722707057813e-10), ('transferidas', 5.546994530369886e-10)]
62 2 [('poblados', 1.8116626421260662e-08), ('colindantes', 1.4216123389587665e-08), ('municipios', 1.390725046235275e-08), ('territorialmente', 1.1280494760512738e-08), ('poblacionales', 1.0979501752217402e-08)]
75 2 [('hídricos', 7.222011504381953e-07), ('combustibles', 7.089017231010075e-07), ('biodiversidad', 6.966277510400687e-07), ('ecosistemas', 5.155960138836235e-07), ('biocombustibles', 4.955826398145291e-07)]
100 1 [('sábado', 2.6796000973661194e-09), ('madrugada', 2.3112434188732323e-09), ('concurrida', 2.24657892289315e-09), ('explanada', 1.7705577004534234e-09), ('sábados', 1.7640333638269112e-09)]
2 0 [('veintidós', 8.10081201052526e-06), ('diecinueve', 7.86240980232833e-06), ('veintiséis', 7.495685167668853e-06), ('ocho', 6.1445207393262535e-06), ('veintisiete', 4.974774583388353e-06)]
54 1 [('concretando', 3.7255702522998035e-07), ('orientando', 3.445852883032785e-07), ('impulsando', 2.2413520639474882e-07), ('relacionando', 2.0105726150632108e-07), ('diferenciando', 1.997534155862013e-07)]
37 2 [('progenitores', 8.593050893068721e-07), ('adoptivos', 8.439101861767995e-07), ('abuelos', 3.69575985814663e-07), ('hijastros', 3.236934276173997e-07), ('adoptiva', 2.978801774133899e-07)]
112 2 [('pormenorizados', 3.1088407581592037e-07), ('retroinformación', 2.6063329983117e-07), ('operacionales', 2.5484609977866057e-07), ('evaluaciones', 2.528304321458563e-07), ('actualizadas', 2.3170581187059724e-07)]
105 2 [('profesorado', 1.76445519173285e-05), ('humanidades', 1.4434248441830277e-05), ('docente', 1.225851974595571e-05), ('pedagogía', 1.0001136615755968e-05), ('pregrado', 6.884665708639659e-06)]
31 1 [('tribunal', 1.438334584236145e-05), ('magistrada', 1.199520193040371e-05), ('procuradores', 9.79336164164124e-06), ('apelación', 8.051134500419721e-06), ('magistrado', 7.881782948970795e-06)]
79 0 [('substituido', 2.309196361238719e-06), ('designada', 1.4896595530444756e-06), ('renombrado', 1.1717909274011618e-06), ('remplazado', 1.1671288575598737e-06), ('referenciado', 1.0471861742189503e-06)]
113 2 [('plenarias', 4.0385285160482454e-07), ('argumentaciones', 2.911548619977111e-07), ('oficiosos', 2.903427969158656e-07), ('ponencias', 2.697382797123282e-07), ('reflexiones', 2.5071378217944584e-07)]
53 1 [('conformados', 1.6027221136027947e-05), ('formadas', 1.5706211343058385e-05), ('formados', 1.3344864782993682e-05), ('formado', 1.0600175301078707e-05), ('integran', 7.980666850926355e-06)]
10 2 [('quechuas', 1.913644518936053e-05), ('etnias', 1.5271119991666637e-05), ('aymaras', 1.21731018225546e-05), ('amerindias', 1.1440240996307693e-05), ('lingüísticamente', 1.1243151675444096e-05)]
119 2 [('prerrogativa', 9.207046787196305e-07), ('soberanía', 6.846178735031572e-07), ('irrenunciable', 5.941684548815829e-07), ('indivisibilidad', 5.334558750291762e-07), ('veneración', 5.224315486884734e-07)]
45 0 [('señalarse', 2.6211534986941842e-06), ('manifestó', 1.8844781379812048e-06), ('señalar', 1.7326477745882585e-06), ('señalado', 1.6833647578096134e-06), ('declaró', 1.3849465858584153e-06)]
90 1 [('asesor', 3.486704736133106e-05), ('vicesecretario', 2.4020904675126076e-05), ('asesora', 1.5985566278686747e-05), ('vicepresidencia', 1.4367261428560596e-05), ('coordinador', 1.3959223906567786e-05)]
106 1 [('contemporánea', 1.2931259334436618e-06), ('historiográfica', 8.587855973019032e-07), ('historiografía', 6.662364739895565e-07), ('literaria', 6.125691243141773e-07), ('literatura', 5.15566000558465e-07)]
101 2 [('veraz', 7.360357017205388e-07), ('desinteresado', 7.228396725622588e-07), ('respetable', 6.910438514751149e-07), ('inspirador', 6.828605592090753e-07), ('elocuente', 6.583297817996936e-07)]
55 0 [('negado', 4.630253442883259e-06), ('desistido', 4.469386567507172e-06), ('decidido', 3.7777463148813695e-06), ('incitado', 3.472219304967439e-06), ('renunciado', 3.3835397061920958e-06)]
93 0 [('regresar', 5.090694230602821e-06), ('abandonarlo', 4.5260198930918705e-06), ('sacar', 3.87049021810526e-06), ('abandonarlos', 3.8036496334825642e-06), ('abandonar', 3.7391100704553537e-06)]
103 2 [('presupuestación', 4.43385069957003e-05), ('priorización', 2.8547117835842073e-05), ('operacional', 2.8054499125573784e-05), ('evaluaciones', 2.7053642043028958e-05), ('intersectoriales', 2.321471220056992e-05)]
98 2 [('estructurarse', 0.00025735521921887994), ('vincularse', 0.00020087158191017807), ('proponerse', 0.00018582581833470613), ('comprenderse', 0.00013321723963599652), ('definirse', 0.0001317854184890166)]
76 2 [('agroalimentarios', 0.0001209985202876851), ('agroalimentaria', 0.00011132326471852139), ('agroalimentarias', 0.00010866372031159699), ('agropecuarios', 0.00010785707127070054), ('comercializables', 9.805297304410487e-05)]
110 2 [('asistencial', 5.832852184539661e-05), ('asistenciales', 5.637147478410043e-05), ('hospitalización', 5.128673365106806e-05), ('ambulatorios', 4.2504118027864024e-05), ('paliativa', 4.1504594264552e-05)]
97 0 [('abandonar', 5.0292965170228854e-05), ('desistir', 4.582980909617618e-05), ('comprometerse', 3.986336741945706e-05), ('negarse', 3.3674659789539874e-05), ('intervenir', 2.960493293358013e-05)]
116 2 [('fundamentales', 5.426283314591274e-05), ('primordiales', 3.9877537346910685e-05), ('determinantes', 3.9578761061420664e-05), ('indispensables', 3.5964130802312866e-05), ('indispensable', 3.550314067979343e-05)]
72 2 [('estuarios', 0.0010415433207526803), ('fluviales', 0.0006949426024220884), ('costeras', 0.0006816120585426688), ('litorales', 0.000618722231592983), ('manglares', 0.0005534857627935708)]
21 1 [('sentenciado', 0.002190261846408248), ('enjuiciado', 0.001903377822600305), ('encarcelado', 0.0017351203132420778), ('absuelto', 0.001564354752190411), ('encarcelada', 0.0013724989257752895)]
117 2 [('interrelación', 0.0001804233470465988), ('complementariedad', 0.00016761964070610702), ('congruencia', 0.00012486941704992205), ('complementariedades', 0.00011356558388797566), ('interrelaciones', 9.846646571531892e-05)]
92 0 [('viceministros', 0.0006866473122499883), ('procuradores', 0.0006034167599864304), ('representantes', 0.0004940154612995684), ('parlamentarios', 0.00047005483065731823), ('dignatarios', 0.00041137097286991775)]
68 1 [('estipulados', 0.0002557706320658326), ('exigibles', 0.00022512380382977426), ('exigidas', 0.00017527176532894373), ('establecidos', 0.00016901959315873682), ('especificados', 0.00016281470016110688)]
73 2 [('tasa', 0.0006170065025798976), ('decremento', 0.0004534368054009974), ('aumento', 0.00041484934627078474), ('incrementos', 0.00037855299888178706), ('porcentuales', 0.00037480026367120445)]
36 2 [('afectividad', 0.00021650129929184914), ('psicológica', 0.00011765465751523152), ('afectivo', 0.00011229211668251082), ('afectivas', 0.00010607913282001391), ('moral', 0.00010321368608856574)]
16 2 [('realizan', 0.001322458265349269), ('participan', 0.0013120053336024284), ('organizan', 0.0011895158095285296), ('agrupan', 0.0009339823736809194), ('desenvuelven', 0.000863244931679219)]
91 1 [('funcionarios', 0.0009221078362315893), ('representantes', 0.0008351296419277787), ('coordinadores', 0.0007439187611453235), ('delegados', 0.00061929872026667), ('empresarios', 0.0006180416094139218)]
109 2 [('reactivación', 0.001834454364143312), ('consolidación', 0.0016998681239783764), ('reorientación', 0.0016438377788290381), ('reforzamiento', 0.0013246830785647035), ('agilización', 0.001215370954014361)]
77 0 [('suministrada', 0.00047063702368177474), ('remitida', 0.0004640253318939358), ('verificada', 0.00044897233601659536), ('comentada', 0.0004145624116063118), ('validada', 0.00041423863149248064)]
64 0 [('subsiguiente', 0.0005035761860199273), ('subsiguientes', 0.0004681185819208622), ('subsiguientemente', 0.00040246089338324964), ('subsecuentes', 0.00032074155751615763), ('ulteriores', 0.0002913718926720321)]
57 2 [('diferentes', 0.002284928457811475), ('variados', 0.0011808485724031925), ('variadas', 0.0010240542469546199), ('específicos', 0.0009257157216779888), ('heterogéneas', 0.0007747507770545781)]
18 1 [('impugnados', 0.004781434778124094), ('impugnar', 0.003894074819982052), ('inadmisibilidad', 0.003518535289913416), ('casación', 0.0031819369178265333), ('impugna', 0.0031430302187800407)]
70 1 [('higiénicas', 0.000839634274598211), ('higiénicos', 0.0007284824969246984), ('asistenciales', 0.0006727933650836349), ('sanitario', 0.0006230135331861675), ('alcantarillado', 0.0005745856324210763)]
48 1 [('responderse', 0.000527052441611886), ('responderlas', 0.00048308944678865373), ('responderla', 0.0003853895468637347), ('pronunciarse', 0.0003482367901597172), ('responderle', 0.00034107259125448763)]
52 0 [('salario', 0.00356769235804677), ('jubilaciones', 0.003308848710730672), ('abonadas', 0.0027284754905849695), ('salarios', 0.0027270831633359194), ('pensionable', 0.0025689771864563227)]
33 1 [('elevado', 0.00048607547068968415), ('elevada', 0.00042369135189801455), ('elevados', 0.00037522136699408293), ('elevadas', 0.00037007665378041565), ('promedio', 0.00030071529909037054)]
115 2 [('indispensable', 0.000909685215447098), ('adecuadas', 0.0008713810238987207), ('eficaz', 0.0008362184162251651), ('óptima', 0.000820350251160562), ('adecuados', 0.0007757123094052076)]
107 2 [('profesionalización', 0.0007433232385665178), ('especialización', 0.0007115693879313767), ('institucionalización', 0.0006492621614597738), ('organizacional', 0.0006243843236006796), ('interdisciplinarios', 0.0005879963864572346)]
3 0 [('decimoséptima', 0.020615730434656143), ('undécima', 0.020097065716981888), ('duodécima', 0.019940104335546494), ('décima', 0.019532736390829086), ('vigésima', 0.01570272073149681)]
65 0 [('derogación', 0.0011265418725088239), ('ratificaciones', 0.0009413613006472588), ('abrogación', 0.0009133769781328738), ('ratificar', 0.0008988950867205858), ('ratificado', 0.0008274584542959929)]
5 0 [('iquique', 0.031091930344700813), ('talca', 0.028622856363654137), ('valdivia', 0.028277602046728134), ('copiapó', 0.027984652668237686), ('rancagua', 0.02580767497420311)]
118 2 [('creencias', 0.000948140281252563), ('religiones', 0.0009300540550611913), ('religiosidad', 0.0009277787758037448), ('espiritualismo', 0.0009086054051294923), ('metafísicas', 0.0008793119341135025)]
96 0 [('especificarse', 0.0060769012197852135), ('excluirse', 0.00584931718185544), ('verificarse', 0.005681368988007307), ('efectuarse', 0.005665760021656752), ('determinarse', 0.005510908551514149)]
82 2 [('complementadas', 0.002134759211912751), ('estudiadas', 0.0018539550947025418), ('verificadas', 0.0016841100296005607), ('identificadas', 0.0016435000579804182), ('analizadas', 0.001560111646540463)]
In [ ]:
Copied!
model.add_vectors()
model.add_vectors()
In [143]:
Copied!
list(clustered.index.values), model.doesnt_match(list(clustered.index.values))
list(clustered.index.values), model.doesnt_match(list(clustered.index.values))
Out[143]:
(['acompañadas', 'acumulados', 'aisladas', 'aplicados', 'calificadas', 'conocidas', 'consideradas', 'creadas', 'cuidadas', 'cuyas', 'desarrolladas', 'dichos', 'generados', 'identificados', 'investigados', 'ordenadas', 'ordenados', 'reconocidas', 'sostenidas', 'sumados'], 'acumulados')